44
Introduction à la programmation Introduction à l’architecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme. Spécification fonctionnelle. Étapes dans la vie d’un programme. Qualités d’un programme. Familiarisation avec votre ordinateur. Environnement de programmation. Compilation et exécution d’un programme. Identification des erreurs de logique et de syntaxe. Composantes d’un programme élémentaire (opérations d’entrée / sortie, variables, lecture et écriture en mémoire, fonction principale (« main »). Exemples de programmes simples en C++.

Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Embed Size (px)

Citation preview

Page 1: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Introduction à la programmation

Introduction à l’architecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme. Spécification fonctionnelle. Étapes dans la vie d’un programme. Qualités d’un programme. Familiarisation avec votre ordinateur. Environnement de programmation. Compilation et exécution d’un programme. Identification des erreurs de logique et de syntaxe. Composantes d’un programme élémentaire (opérations d’entrée / sortie, variables, lecture et écriture en mémoire, fonction principale (« main »). Exemples de programmes simples en C++.

Page 2: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Qu’est-ce qu’un ordinateur ? Appareil capable d’effectuer des calculs et de prendre des décisions logiques des millions, voire des milliards de fois plus rapidement que le cerveau humain.

Ordinateur personnel Cerveau humain

Superordinateur Cerveau humain

Les ordinateurs traitent des données au moyen d’une série d’instructions oud’opérations élémentaires connues sous le nom de programme.

Les programmeurs sont les personnes chargées de traduire des algorithmesen une série d’instructions.

Applications diverses :° génération de films d’animation, mise en orbite d’un engin spatial,° paiement d’une facture par l’entremise d’une succursale bancaire, etc.

Les différents composants d’un ordinateur sont désignés par le terme matériel etles programmes qui y sont exécutés, par le terme logiciels.

100 millions d’additions /sec. plusieurs dizaines d’années

plusieurs centaines de milliards des centaines de milliers de personnesd’additions /sec. en une année.

On peut se servir d’un ordinateur sans programmer (Excel, Word, PowerPoint, …).

Page 3: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Fonction d’un ordinateur Machine capable de recevoir, de conserver, de traiter et de transmettre des

données.

Exécute pas à pas, très rapidement, une suite d’instructions que l’on nomme « programme ».

Donnéesd’entrée

Donnéesde sortie

PROGRAMME

domaine fonction image

Page 4: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Historique ENIAC, le 1e ordinateur électronique (1946) : 18 000 lampes env. reliées par un câblage.

Page 5: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur Quelle que soit leur apparence physique, la plupart des ordinateurs sonthabituellement divisés en 6 unités logiques.

1. Unité d’entrée

Celle qui reçoit l’information (données et programmes) provenant des différentspériphériques d’entrée et qui met cette information à la disposition des autresunités afin qu’elle puisse être traitée.

Ex. : clavier, souris, numériseur(« scanners »), joystick, …

Système optiquede

captures de mouvement

Gants de données(« datagloves »)

Page 6: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur 2. Unité de sortie

Celle qui prend l’information traitée par l’ordinateur et qui la distribue aux différentspériphériques de sortie pour la rendre utilisable à l’extérieur de la machine.

Ex. : écran, imprimante, …

Page 7: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur 3. Unité de mémoire

(désignée aussi sous le terme de mémoire ou mémoire principale)

Elle conserve l’information provenant de l’unité d’entrée de façon à la rendreimmédiatement disponible pour tout traitement.

Elle conserve également l’information traitée jusqu’à ce qu’elle puisse êtredistribuée éventuellement aux périphériques de sortie.

Il existe deux types de mémoire :

(i) La mémoire en lecture-écriture: un stockage primaire rapide mais onéreux,elle perd ses données en cas de coupure de courant (« Random Access Memory »)Permet le stockage de données ou de programmes n’ayant pas à êtredisponibles en permanence.

(ii) La mémoire en lecture seule (« Read Only Memory »):renferme certains programmes qui doivent toujours être présents.

On peut identifier une cellule mémoire à partir de son adresse ou de sa position.

Page 8: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur 4. Unité arithmétique et logique

Responsable de l’exécution des calculs (addition, soustraction, multiplication,division, …) et des mécanismes de décision (par ex., la comparaison de 2données en mémoire pour déterminer si elles sont égales ou non).

Serviteur de l’unité centrale de traitement.

Page 9: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur 5. Unité centrale de traitement

Coordonne la machine et supervise le fonctionnement des autres unités.Exécute les opérations : accède aux instructions, les interprète et

active les unités appropriées.

Indique à l’unité d’entrée quand lire l’information en mémoire, indique à l’UALquand utiliser l’information provenant de la mémoire pour des calculs etsynchronise l’unité de sortie pour diriger l’information de la mémoire auxpériphériques de sortie.

Microprocesseur

Page 10: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Organisation d’un ordinateur 6. Unité de stockage secondaire

De grande capacité, elle permet l’entreposage de données à long terme.

Les données ou les programmes qui ne sont pas utilisés de façon active sont nor-malement rangés dans ces unités secondaires (disques, disquette, carte USB, …).

Demande plus de temps pour accéder à des données rangées en mémoiresecondaire mais le coût par unité de stockage secondaire est moins élevécomparativement à la mémoire principale.

Disque dur

Carte USB

Note : Les données et les programmessont stockés sur disque dur etchargés en mémoire RAM audémarrage du programme.

Page 11: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Coûts de fabrication et de développement

Les coûts de fabrication du matériel informatique ont énormément diminué aucours des dernières années.

Les ordinateurs personnels sont devenus un produit d’usage courant.

Le coût de développement des logiciels n’a pas cessé de croître.

Les entreprises sont inondées de données.

Le logiciel est généralement livré en retard.

Le logiciel est souvent défectueux et difficile à modifier.

Constat

La complexité des problèmes à traiter a augmenté considérablement.Équipes de développement importantes.

Un seul individu ne peut comprendre toutes les subtilités d’un modèlede conception.

Conséquences

Ses coûts excèdent souvent les budgets prévus.

Un programme utilisé sera modifié On augmente sa complexité, à moins delutter contre ce phénomène.

Page 12: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Coûts de développement

Page 13: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Évolution des systèmes d’exploitation

Les systèmes d’exploitation sont des logiciels spécialisés qui furent développéspour faciliter l’utilisation des ordinateurs et augmenter leur capacité de traitement.

Les premiers systèmes permettaient aux ordinateurs de n’exécuter qu’une seuleopération ou tâche à la fois.

La machine exécute un seul programme à la fois(traitement par lot mono-utilisateur).

Les travaux étaient soumis à un centre de service informatique au moyende cartes perforées (délais rencontrés : plusieurs heures voire des joursavant de recevoir le résultat du programme).

Les systèmes suivants permettent de partager les ressources de l’ordinateur entrede nombreuses opérations pour permettre leur exécution en « simultané »(multiprogrammation). demeure vrai.

Dans les années 60, on introduit des systèmes à temps partagé où des utilisateursbranchés à leur propre terminal partagent une seule machine en même temps.

Dans les faits, celle-ci n’exécute pas tous les travaux en même temps maisexécute plutôt une petite partie de la tâche d’un utilisateur, puis passe à celledu suivant. L’ordinateur étant plus rapide, cela donne l’impression que lesprogrammes s’exécutent simultanément.

Page 14: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Informatique personnelle, distribuée et client/serveur

L’informatique personnelle a vu le jour en 1977 (Apple); le prix plus abordabledes ordinateurs a permis d’en faire une utilisation personnelle ou pour le travail.

En 81, IBM lançait le « IBM personal Computer ». Du jour au lendemain,ce fut un bouleversement.

Les ordinateurs personnels étaient reliés en réseaux à l’intérieur d’une organisation,soit sur des lignes téléphoniques, soit en réseaux locaux.

Le traitement informatique était distribué vers les différents postes de travailà travers les réseaux au lieu d’un traitement central unique.

Pour faciliter la communication entre les ordinateurs d’un réseau, des machinesappelés serveurs de fichiers, offrent un stock de programmes et de données dontpeuvent se servir les ordinateurs clients répartis sur le réseau.

L’informatique parallèle permet d’exécuter des tâches en parallèle.

Un ordinateur parallèle possède plusieurs unités de traitement.

Il existe 2 types d’architectures parallèles :- l’une où les unités de traitement partagent une mémoire commune,- l’autre où chaque unité de traitement possède son bloc de mémoire.

Page 15: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Langages machine, d’assemblage et de haut niveau

Il existe des centaines de langages de programmation permettant de traduire unalgorithme en une suite d’opérations élémentaires connues de l’ordinateur(C, C++, FORTRAN, JAVA, PASCAL, COBOL, SIMSCRIPT, GPSS, ADA, APL, …).

Programme écrit dans unlangage de haut niveau

Programme écrit enlangage d’assemblage

Programme écrit enlangage machine

L’ordinateur ne peut comprendredirectement que son propre langagemachine.

Chaque programme est une suitede nombres - une série de 1 et de 0 -fastidieux pour les humains.

Assembleur (traducteur en langage machine)

Compilateur(traducteur en langage d’assemblage)

Ex. : +1300042774+1400593419+1200274027

Ex. : LOAD PaieReguliereADD PaieSupplementaireSTORE PaieBrute

Un peu plus clair pour les humains.

Des instructions qui ressemblentà la langue naturelle et au langagemathématique.

Ex. : PaieBrute = PaieReguliere + PaieSupplementaire

Instructions très primitives.

Un programme doit respecterscrupuleusement les conventionsdu langage.

Spécifique pourchaque langage.

Page 16: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Interpréteur

La compilation et l’assemblage d’un programme écrit en langage de haut niveaupeut prendre un temps considérable.

C’est pourquoi on développa des interpréteurs capables d’exécuter directementdes programmes en langage de haut niveau sans compilation.

Les programmes interprétés s’exécutent plus lentement que ceux compilés.

La version compilée n’est produite qu’une fois le programmecomplété, assurant ainsi un fonctionnement plus efficace.

Page 17: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Historique du C

Le C et le C++ figurent parmi les langages de haut niveau les plus puissants etles plus répandus.

C est disponible pour la plupart des ordinateurs; il est indépendant du matériel.

Au début des années 80, l’emploi très répandu du C sur différents typesd’ordinateurs amena de nombreuses variantes.

La nécessité d’une version standard du langage C se faisait sentir.

En 83, un comité de l’American National Standards Comittee on Computersand Information Processing (ANSI) était formé afin de fournir une définition dulangage plus claire et indépendante de la machine.

En 89, le standard élaboré fut approuvé.

En 90, l’ANSI travailla de pair avec l’International Standards Organization (ISO)pour produire un document de normalisation du langage C à l’échelle mondiale.

Nous pouvons écrire des programmes portables capablesde fonctionner sur différentes plates-formes.

Page 18: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Historique du C++

Une extension du C, développé au début des années 80 est un sur-ensemblede C.

Il offre des possibilités pour la programmation orientée objets.

C++ est un langage hybride qui permet de programmer en C, tout en profitant,le cas échéant, des concepts orientés objets.

Une approche « jeu de construction » pour concevoir des programmes :ne pas essayer de réinventer la roue mais se servir de pièces existanteschaque fois que c’est possible (réutilisation de logiciels).

Note : En mai 95, Sun annonçait le Java fondé sur le C et le C++ tout enincorporant des outils pour le multimédia, la mise en réseau, legraphisme, l’accès à des bases de données, etc.

Page 19: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Avantages du langage C

C est un langage :

universel : non orienté vers un domaine d’applications particulières comme enFORTRAN ou en COBOL.

compact : basé sur un noyau de fonctions et d’opérateurs limité, permettant la formulation d’expressions simples mais efficaces.

moderne : C offre les opportunités rencontrées dans les autres langages de haut niveau.

près de la machine : C renferme des opérateurs très proches de ceux du langage machine et des fonctions qui permettent un accès simple et direct aux fonctions internes de l’ordinateur.

rapide : la caractéristique précédente permet d’écrire des programmes efficaces.

indépendant de la machine : C peut être utilisé sur n’importe quel système en possession d’un compilateur C.

portable : en respectant le standard ANSI-C, on peut utiliser le même programme sur n’importe quel système simplement en le recompilant.

extensible : le langage possède tout un ensemble de librairies d’outils.

Page 20: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Désavantages du langage C

Code efficace mais pas toujours facilement compréhensible.

Code en C :

// Afficher les n premiers éléments d’un tableau A en insérant un espace// entre les éléments et en commençant une nouvelle ligne après chaque// dixième chiffre.

for (i = 0; i < n; i++)printf("%6d%c", A[i], (i%10==9) ? '\n' : ' ');

Code en SIMSCRIPT :

DEFINE A, B, C AS REAL VARIABLESDEFINE ADD2 AS A ROUTINE GIVEN 2 ARGUMENTS YIELDING 1 ARGUMENT

ROUTINE ADD2 GIVEN X AND Y, YIELDING ZDEFINE X,Y, Z AS REAL VARIABLESLET Z = X + YRETURNEND

Limites de la portabilité : ANSI-C est assez limité.Certaines applications nécessitent l’usage de fonctions spécialisées.

Page 21: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Discipline de programmation

Danger du C.

C est un langage de programmation structuré mais près de la machine.

C ne nous force pas à adopter un certain style de programmation.

La tentation de programmer du code « spaghetti » est grande.

Le programmeur a beaucoup de liberté mais des responsabilités;il doit veiller lui-même à adopter un style de programmation de qualité.

Page 22: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Qualités d’un programme

Correct : S’il obéit à ses spécifications.

Entrée : 2 entiers positifs, un numérateur et un dénominateur.

Sortie : la valeur de l’expression : numérateur / dénominateur.

Exemple :

Le programme doit accepter 2 entiers positifs en entrée seulementet fournir uniquement le résultat escompté.

Précision souhaitée des données : Lors des calculs effectués, indiquer laprécision souhaitée (# de décimales).

Valide : Lorsque le programme est une composante d’un système, il doitfonctionner sur une base individuelle mais aussi à l’intérieur du système.

Exemple : Calcul de la cotisationsyndicale d’un employé

Régime d’emploi d’un employé

Fiable : Il fait ce qu’on s’attend tout le temps.

Exemple : Programme de calcul de l’inverse d’une matrice carréeéprouvant de la difficulté lorsque le déterminant est près de 0.

Page 23: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Qualités d’un programme

Complet :

Il doit manipuler tous les échantillons de données possibles correctement.

Exemple : Calcul de la moyenne des notes à un examen sachant queles notes n’ont pas encore été saisies.

Calcul du nombre de jours ouvrables écoulés depuis le débutdes travaux de construction d’une maison. On doit prendre encompte, le cas échéant, les 2 semaines de vacances de laconstruction.

Il doit protéger le système contre des données erronées.

Il doit satisfaire à tous les besoins identifiés lors de la définition du problème.

Robuste : Le programme peut fonctionner même lorsque le système est en étatde défaillance.

Exemple : Erreur survenue lors de la saisie d’une donnée au clavier.

Utile : à nos besoins.

Page 24: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Qualités d’un programme

Efficace :

S’il exige comme ressources des quantités limitées.

Exemple : Calcul de 1 + 2 + 3 + … + 1 000 000 = 500 000 * 1 000 001 = 100 000 * 5 000 005 = 500 000 500 000.

Vérifiable : Si l’on peut démontrer formellement qu’il est correct.

Maintenance facile : Mise à jour facile.

Exemple : Changement de millénaire.

Programme bien documenté

Impression bien soigné

Page 25: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Trucs pour faciliter la bonne programmation

1. Définir le problème exactement.

2. Pensez en premier, programmer plus tard.La Loi de Murphy, aussi connue sous le nom de Loi de l'Emmerdement Maximum (LEM).

Il existe de nombreuses variantes de cette loi, basés sur le fait que toute catastrophe possible a une fâcheusetendance à se produire. La plus connue est sans doute la Loi de la tartine beurrée, selon laquelle "Toute tartinebeurrée livrée à elle-même tombera du côté beurré." (Ça marche aussi avec de la confiture, et c'est encore plusefficace si vous avez un tapis en dessous).

Corollaire sur la programmation :Plus tôt vous commencez à coder votre programme (au-lieu de penser),plus tard vous finirez.

3. Utiliser une technique de programmation (par ex., une approche « top-down »).

4. Utiliser autant que possible des structures linéaires (éviter les « GOTO »).

5. Utiliser immédiatement une syntaxe correcte.

6. Éviter l’usage d’éléments qui dépendent d’une installation donnée.

7. N’assumer jamais que l’ordinateur a assumé quelque chose (valeurs par défaut).

8. Vérifier à la main votre programme avant de le faire exécuter.

Page 26: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Étapes dans la vie d’un programme

1. Définir le problème avec précision.

2. Une approche de solution est choisie pour résoudre le problème.

3. Définition d’un algorithme.

4. Traduction en un langage de programmation au choix.

5. Mise au point d’un programme (validation).

6. Documentation.

7. Maintenance.

Page 27: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Familiarisation avec votre ordinateur

Ouverture d’une sessionRecherche d’un emplacement pour écrire, tester et améliorer votre programme.

Création d’un nouveau dossier ou répertoire (1) .

Création d’un fichier C ou C++ à l’intérieur de ce dossier qui contiendra votrefutur programme : *.c ou *.cpp

* désigne le nom du fichier (2) .

Ouverture de ce fichier.

En utilisant l’éditeur de C++, écrire votre premier programme tout en lesauvegardant sur disquette à de multiples reprises.

Compiler votre programme.

Mettre au point votre programme et compiler de nouveau.

Exécuter votre programme.

Fermeture de la session.

(1) Les dossiers peuvent être imbriqués et former une hiérarchie.(2) Ne pas utiliser d’accents ni les caractères spéciaux \ / : * ? " < > | pour un nom

de fichier ou un dossier. L’espace et le caractère de soulignement _ sont souvent utilisés.

Effectuer une dernière sauvegarde sur disquette.

Exemple : Premier programme.cpp

Page 28: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Copies de sauvegarde de vos fichiers

Sauvegardez souvent.

Voici quelques règles à garder présentes à l’esprit lors de la création de copiesde sauvegarde sur une disquette ou une carte USB :

Pour éviter de passer plusieurs heures à refaire un travail.

Alternez les supports de sauvegarde.

Servez-vous de plusieurs disquettes de sauvegarde en alternance.

Ne sauvegardez que les fichiers source.

Ne pas sauvegarder le code machine car le compilateur peut générer denouveau très facilement ces fichiers.

Attention à la direction de sauvegarde.

Ne pas recouvrir un fichier plus récent par une version antérieure.

Page 29: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Description d’un programme simple

Fichier Premier programme.cpp// Mon premier programme en C++.#include <iostream.h>void main(){

cout << "C’est mon premier programme en C++." << endl;}

C’est mon premier programme en C++.

Attention :

Vous devez saisir les majuscules et les minuscules exactement telles qu’ellesapparaissent.

Main, main et MAIN sont distincts l’un de l’autre.

C ou C++ ne tient pas compte de la présentation : espaces et sauts de lignes.

Ex.: Le programme précédent pourrait s’écrire en une seule ligne mêmesi ce n’est pas conseillé (attention à la mise en page : présenter un programme de façon lisible) :void main(){ cout << "C’est mon premier programme en C++." << endl;

Page 30: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Présentation de ce programme élémentaire

#include <iostream.h>Inclure dans ce fichier le contenu du fichier iostream qui renferme la définitiond’outils permettant d’effectuer des opérations d’entrée/ sortie standards(saisie au clavier et affichage à l’écran).

Note : C exige l’utilisation de bibliothèques de fonctions disponibles dansleur forme précompilée (extension .LIB). Pour pouvoir les utiliser, ilfaut inclure des fichiers en-tête (extension .h) dans nos programmes.

Après la compilation, le contenu des bibliothèques est ajouté à notreprogramme pour former une version exécutable du programme.

void main(){

cout << "C’est mon premier programme en C++." << endl;}

Cela définit une fonction nommée main.Une fonction est un ensemble d’instructions placées entre les accolades { }effectuant une tâche particulière.

Tout programme C ou C++ possède une fonction main. Nous verrons plus tardcomment définir d’autres fonctions.

Page 31: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Présentation de ce programme élémentaire

cout << "C’est mon premier programme en C++." << endl;Chaque instruction doit obligatoirement se terminer par un point-virgule.

cout permet d’afficher des données à l’écran selon les directives d’impressionspécifiées.

L’opérateur de sortie << permet de séparer des données et / ou des directivesd’impression entre elles.

"C’est mon premier programme en C++." désigne une chaîne de caractères àafficher. Pour distinguer entre la fonction main et la chaîne main, on doit placerdans ce dernier cas la suite de caractères entre guillemets "main".

endl permet de faire un saut de ligne à l’impression.

Cette instruction permet d’afficher à l’écran la chaîne C’est mon premier programme en C++. puis, effectue un saut de ligne.

// Mon premier programme en C++.

Le symbole // signifie que le reste de la ligne est un commentaire.Les commentaires servent à documenter les programmes et améliorer leur lisibilité.

Page 32: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Erreurs de compilation ou de syntaxe

#include <iostream.h>void main(){

cot << "C’est mon premier programme en C++." << endl;}

Vous allez obtenir plusieurs messages d’erreur à la compilation; le compilateurn’a aucune idée de ce que vous entendez par cot.

Lorsque le compilateur rencontre une ou plusieurs erreurs, le programme n’estpas traduit en langage machine. Il n’y a donc pas de programme à exécuter.

Corriger l’erreur et compiler à nouveau.

Note : Si le compilateur détecte une erreur, il ne s’arrête pas immédiatementet tente d’identifier autant d’erreurs que possible.

Il se peut que certaines erreurs subséquentes n’en soient pas; cela seraitdû à une mauvaise interprétation du compilateur.

Page 33: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Erreurs de compilation ou de syntaxe

#include <iostream.h>void main(){

cout << "C’est mon premier programme en C++." << endl}

Le compilateur vous fournira probablement un seul message d’erreur plus précis.

Page 34: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Programme qui saisit 2 entiers et affiche leur somme.

/*Ce programme lit 2 valeurs entières et affiche leur quotient.

Le deuxième entier doit être non nul.*/

#include <iostream.h>void main(){

int entier1, entier2, quotient; // Déclaration.cout << "Entrez le premier entier :" << endl;cin >> entier1; // Lecture du 1e entier.cout << "Entrez le deuxieme entier :" << endl;cin >> entier2; // Lecture du 2ième entier.quotient = entier1 / entier2;cout << "Le quotient est :" << quotient << endl;

}

Entrez le premier entier :63Entrez le deuxieme entier :21Le quotient est :3

Page 35: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Analyse du programme.

/*Ce programme lit 2 valeurs entières et affiche leur quotient.

Le deuxième entier doit être non nul.*/

Lorsqu’un commentaire tient sur plusieurs lignes, le commentaire débute par /*et se termine par */.

Note : Un commentaire n’appelle aucune action de la part de l’ordinateur et lecompilateur les ignore.

Il est interdit d’utiliser des commentaires imbriqués comme par exemple,

/* Ceci est /* évidemment */ défendu. */void main(){

// un ensemble de déclarations.// un ensemble d’instructions.

}

void signifie que la fonction ne retourne aucune valeur à son environnement.() signifie qu’il n’y a aucun paramètre à la fonction.

Page 36: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Analyse du programme.

int entier1, entier2, quotient; // Déclaration.

Il s’agit d’une déclaration où les mots entier1, entier2 et quotient sont des nomsde variable.

Une variable est un emplacement en mémoire où il est possible de stockerune valeur pour un programme.

Cette déclaration spécifie que les variables entier1, entier2 et quotient sont desdonnées de type int, c’est-à-dire des variables qui retiendront des valeursd’entiers, comme les valeurs 3, 0, -5.

cin >> entier1; // Lecture du 1e entier.

Permet de saisir au clavier une valeur entière qui sera conservée dans lavariable entier1.

L’opérateur d’entrée >> permet de séparer les données à saisir et / ou desdirectives de lecture entre elles. Ex. : cin >> x >> y;

Page 37: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Analyse du programme.

quotient = entier1 / entier2;

Il s’agit d’une instruction d’affectation qui calcule le quotient des variables entier1et entier2, puis affecte le résultat à la variable quotient en utilisant l’opérateurd’affectation =

cout << "Le quotient est :" << quotient << endl;

Affiche à l’écran la chaîne Le quotient est : suivie de la valeur entière de lavariable quotient suivie d’un saut de ligne.

Page 38: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Erreur d’exécution ou de logique

Une fois ce programme compilée, vous pouvez l’exécuter. Si vous entrez au claviercomme 2ième valeur entière la valeur nulle, le programme terminera anormalement.

Si vous choisissez l’option Débogage, un message sera affiché indiquant que l’ona tenté d’effectuer une division par zéro.

C’est une erreur d’exécution ou de logique.

Page 39: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Algorithmique : méthode de raffinement successif

Problème I: Imaginons un robot domestique à qui nous devons fournir un algorithme lui permettant de préparer une tasse de café.

Une première version de l'algorithme pourrait être: (1) faire bouillir de l'eau (2) mettre le café dans la tasse (3) ajouter l'eau dans la tasse.

Les étapes de cet algorithme ne sont probablement pas assez détaillées pour quele robot puisse les interpréter.

Chaque étape doit donc être affinée en une suite d'étapes plus élémentaires,chacune étant spécifiée d'une manière plus détaillée que dans la première version.

(1) faire bouillir l'eau peut être affinée en (1.1) remplir la bouilloire d'eau (1.2) brancher la bouilloire sur le secteur (1.3) attendre l'ébullition (1.4) débrancher la bouilloire

Page 40: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Algorithmique : méthode de raffinement successif

(2) mettre le café dans la tasse pourrait être affiné en (2.1) ouvrir le pot à café (2.2) prendre une cuiller à café (2.3) plonger la cuiller dans le pot (2.4) verser le contenu de la cuiller dans la tasse (2.5) fermer le pot à café

(3) ajouter de l'eau dans la tasse pourrait être affiné en (3.1) verser de l'eau dans la tasse jusqu'à ce que celle-ci soit pleine.

Certaines étapes étant encore trop complexes et sans doute incompréhensiblespour notre robot, il faut les affiner davantage.

(1.1) remplir la bouilloire d'eau

(1.1.1) mettre la bouilloire sous le robinet (1.1.2) ouvrir le robinet (1.1.3) attendre que la bouilloire soit pleine (1.1.4) fermer le robinet

Page 41: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Méthode de raffinement successif : degré de raffinement

Quand il procède à des raffinements des différentes étapes, le concepteur d'unalgorithme doit naturellement savoir où s'arrêter. Autrement dit, il doit savoir quandune étape constitue une primitive adéquate au point de ne pas avoir besoin deraffinement supplémentaire.

Cela signifie évidemment qu'il doit connaître quelle sorte d'étape le processeurpeut interpréter.

Le concepteur de l'algorithme précédent doit savoir que le robot peutinterpréter "brancher la bouilloire" ce qui de ce fait n'exige pas deraffinement, mais qu'en revanche, il ne peut pas interpréter "remplir labouilloire" et que dès lors un raffinement devient nécessaire.

Exemple :

Page 42: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

Soit la suite G définie de la manière suivante :

G(0) = 1G(1) = N où N est un entier positif,G(2) = N + 2G(i) = G(i-1) + N * G(i-2) + 3 G(i-3) i > 2.

À partir de chaque valeur lue pour N (au nombre de 3), faites imprimer les 21premiers nombres de la suite G. Vous devez les faire imprimer en « escalier »,c’est-à-dire que les nombres de la suite seront disposés de la façon suivante :

G(0)G(1) G(2)G(3) G(4) G(5)G(6) . . .

Il y aura donc 3 escaliers. 2 lignes vides devront séparer 2 escaliers consécutifs.

Page 43: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

1. Répétez trois fois1.1 { Lecture d’une valeur entière N. }

Lire une valeur entière et conserver cette valeur dans N.

1.2 { Calcul et affichage en « escalier » des 21 premiers nombres de G.

1.3 Répétez 2 fois l’opération qui consiste à faire un saut de ligne.

1.2 { Calcul et affichage en « escalier » des 21 premiers nombres de G.Afficher la valeur de 1.Faire un saut de ligne.Pour chaque ligne i allant de 2 à 61.2.1 { Calcul et affichage de la iième ligne. }1.2.2 Faire un saut de ligne.

1.2.1 { Calcul et affichage de la iième ligne. }Pour chaque indice k allant de j=1,2,…, i-1 j à (j=1,2,…, i-1 j) + i - 1 1.2.1.1 { Calculer G(k) et conserver cette valeur dans Resultat. } 1.2.1.2 Afficher la valeur de Resultat suivie de 5 espaces.

Page 44: Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

1.2.1.1 {Calculer G(k) et conserver cette valeur dans Resultat. }Si k est égale à 0 alors Resultat prend la valeur 1.Si k est égale à 1 alors Resultat prend la valeur N.Si k est égale à 2 alors Resultat prend la valeur N + 2.Si k est plus grand que 2 alors1.2.1.1.1Conserver dans u, v et w les valeurs de 1, N et N+2 resp.1.2.1.1.2Pour chaque valeur de m allant de 3 à k

1.2.1.1.2.1 Conserver dans Resultat la valeur de w + N*v + 3*u.1.2.1.1.2.2 Placer dans u la valeur de v.1.2.1.1.2.3 Placer dans v la valeur de w.1.2.1.1.2.4 Placer dans w la valeur de Resultat.

Y a-t-il une méthode plus efficace de calculer chaque élément de la suite G ?