La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme."— Transcription de la présentation:

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

2 Quest-ce quun ordinateur ? Appareil capable deffectuer des calculs et de prendre des décisions logiques des millions, voire des milliards de fois plus rapidement que le cerveau humain. Ordinateur personnelCerveau humain SuperordinateurCerveau humain Les ordinateurs traitent des données au moyen dune série dinstructions ou dopérations élémentaires connues sous le nom de programme. Les programmeurs sont les personnes chargées de traduire des algorithmes en une série dinstructions. Applications diverses : ° génération de films danimation, mise en orbite dun engin spatial, ° paiement dune facture par lentremise dune succursale bancaire, etc. Les différents composants dun ordinateur sont désignés par le terme matériel et les programmes qui y sont exécutés, par le terme logiciels. 100 millions dadditions /sec.plusieurs dizaines dannées plusieurs centaines de milliardsdes centaines de milliers de personnes dadditions /sec.en une année. On peut se servir dun ordinateur sans programmer (Excel, Word, PowerPoint, …).

3 Fonction dun ordinateur Machine capable de recevoir, de conserver, de traiter et de transmettre des données. Exécute pas à pas, très rapidement, une suite dinstructions que lon nomme « programme ». Données dentrée Données de sortie PROGRAMME domainefonction image

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

5 Organisation dun ordinateur Quelle que soit leur apparence physique, la plupart des ordinateurs sont habituellement divisés en 6 unités logiques. 1. Unité dentrée Celle qui reçoit linformation (données et programmes) provenant des différents périphériques dentrée et qui met cette information à la disposition des autres unités afin quelle puisse être traitée. Ex. : clavier, souris, numériseur(« scanners »), joystick, … Système optique de captures de mouvement Gants de données (« datagloves »)

6 Organisation dun ordinateur 2. Unité de sortie Celle qui prend linformation traitée par lordinateur et qui la distribue aux différents périphériques de sortie pour la rendre utilisable à lextérieur de la machine. Ex. : écran, imprimante, …

7 Organisation dun ordinateur 3. Unité de mémoire (désignée aussi sous le terme de mémoire ou mémoire principale) Elle conserve linformation provenant de lunité dentrée de façon à la rendre immédiatement disponible pour tout traitement. Elle conserve également linformation traitée jusquà ce quelle puisse être distribué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 nayant pas à être disponibles 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.

8 Organisation dun ordinateur 4. Unité arithmétique et logique Responsable de lexécution des calculs (addition, soustraction, multiplication, division, …) et des mécanismes de décision (par ex., la comparaison de 2 données en mémoire pour déterminer si elles sont égales ou non). Serviteur de lunité centrale de traitement.

9 Organisation dun 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 à lunité dentrée quand lire linformation en mémoire, indique à lUAL quand utiliser linformation provenant de la mémoire pour des calculs et synchronise lunité de sortie pour diriger linformation de la mémoire aux périphériques de sortie. Microprocesseur

10 Organisation dun ordinateur 6. Unité de stockage secondaire De grande capacité, elle permet lentreposage 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émoire secondaire 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 programmes sont stockés sur disque dur et chargés en mémoire RAM au démarrage du programme.

11 Coûts de fabrication et de développement Les coûts de fabrication du matériel informatique ont énormément diminué au cours des dernières années. Les ordinateurs personnels sont devenus un produit dusage courant. Le coût de développement des logiciels na 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 dun modèle de conception. Conséquences Ses coûts excèdent souvent les budgets prévus. Un programme utilisé sera modifiéOn augmente sa complexité, à moins de lutter contre ce phénomène.

12 Coûts de développement

13 Évolution des systèmes dexploitation Les systèmes dexploitation sont des logiciels spécialisés qui furent développés pour faciliter lutilisation des ordinateurs et augmenter leur capacité de traitement. Les premiers systèmes permettaient aux ordinateurs de nexécuter quune seule opé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 moyen de cartes perforées (délais rencontrés : plusieurs heures voire des jours avant de recevoir le résultat du programme). Les systèmes suivants permettent de partager les ressources de lordinateur entre de 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 utilisateurs branchés à leur propre terminal partagent une seule machine en même temps. Dans les faits, celle-ci nexécute pas tous les travaux en même temps mais exécute plutôt une petite partie de la tâche dun utilisateur, puis passe à celle du suivant. Lordinateur étant plus rapide, cela donne limpression que les programmes sexécutent simultanément.

14 Informatique personnelle, distribuée et client/serveur Linformatique personnelle a vu le jour en 1977 (Apple); le prix plus abordable des ordinateurs a permis den 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 à lintérieur dune 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 dun traitement central unique. Pour faciliter la communication entre les ordinateurs dun réseau, des machines appelés serveurs de fichiers, offrent un stock de programmes et de données dont peuvent se servir les ordinateurs clients répartis sur le réseau. Linformatique parallèle permet dexécuter des tâches en parallèle. Un ordinateur parallèle possède plusieurs unités de traitement. Il existe 2 types darchitectures parallèles : - lune où les unités de traitement partagent une mémoire commune, - lautre où chaque unité de traitement possède son bloc de mémoire.

15 Langages machine, dassemblage et de haut niveau Il existe des centaines de langages de programmation permettant de traduire un algorithme en une suite dopérations élémentaires connues de lordinateur (C, C++, FORTRAN, JAVA, PASCAL, COBOL, SIMSCRIPT, GPSS, ADA, APL, …). Programme écrit dans un langage de haut niveau Programme écrit en langage dassemblage Programme écrit en langage machine Lordinateur ne peut comprendre directement que son propre langage machine. Chaque programme est une suite de nombres - une série de 1 et de 0 - fastidieux pour les humains. Assembleur (traducteur en langage machine) Compilateur (traducteur en langage dassemblage) Ex. : Ex. : LOAD PaieReguliere ADD PaieSupplementaire STORE PaieBrute Un peu plus clair pour les humains. Des instructions qui ressemblent à la langue naturelle et au langage mathématique. Ex. : PaieBrute = PaieReguliere + PaieSupplementaire Instructions très primitives. Un programme doit respecter scrupuleusement les conventions du langage. Spécifique pour chaque langage.

16 Interpréteur La compilation et lassemblage dun programme écrit en langage de haut niveau peut prendre un temps considérable. Cest pourquoi on développa des interpréteurs capables dexécuter directement des programmes en langage de haut niveau sans compilation. Les programmes interprétés sexécutent plus lentement que ceux compilés. La version compilée nest produite quune fois le programme complété, assurant ainsi un fonctionnement plus efficace.

17 Historique du C Le C et le C++ figurent parmi les langages de haut niveau les plus puissants et les 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, lemploi très répandu du C sur différents types dordinateurs amena de nombreuses variantes. La nécessité dune version standard du langage C se faisait sentir. En 83, un comité de lAmerican National Standards Comittee on Computers and Information Processing (ANSI) était formé afin de fournir une définition du langage plus claire et indépendante de la machine. En 89, le standard élaboré fut approuvé. En 90, lANSI travailla de pair avec lInternational Standards Organization (ISO) pour produire un document de normalisation du langage C à léchelle mondiale. Nous pouvons écrire des programmes portables capables de fonctionner sur différentes plates-formes.

18 Historique du C++ Une extension du C, développé au début des années 80 est un sur-ensemble de 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 existantes chaque fois que cest possible (réutilisation de logiciels). Note : En mai 95, Sun annonçait le Java fondé sur le C et le C++ tout en incorporant des outils pour le multimédia, la mise en réseau, le graphisme, laccès à des bases de données, etc.

19 Avantages du langage C C est un langage : universel : non orienté vers un domaine dapplications particulières comme en FORTRAN ou en COBOL. compact : basé sur un noyau de fonctions et dopérateurs limité, permettant la formulation dexpressions 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 lordinateur. rapide : la caractéristique précédente permet décrire des programmes efficaces. indépendant de la machine : C peut être utilisé sur nimporte quel système en possession dun compilateur C. portable : en respectant le standard ANSI-C, on peut utiliser le même programme sur nimporte quel système simplement en le recompilant. extensible : le langage possède tout un ensemble de librairies doutils.

20 Désavantages du langage C Code efficace mais pas toujours facilement compréhensible. Code en C : // Afficher les n premiers éléments dun 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 VARIABLES DEFINE ADD2 AS A ROUTINE GIVEN 2 ARGUMENTS YIELDING 1 ARGUMENT ROUTINE ADD2 GIVEN X AND Y, YIELDING Z DEFINE X,Y, Z AS REAL VARIABLES LET Z = X + Y RETURN END Limites de la portabilité : ANSI-C est assez limité. Certaines applications nécessitent lusage de fonctions spécialisées.

21 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é.

22 Qualités dun programme Correct : Sil obéit à ses spécifications. Entrée :2 entiers positifs, un numérateur et un dénominateur. Sortie :la valeur de lexpression : numérateur / dénominateur. Exemple : Le programme doit accepter 2 entiers positifs en entrée seulement et fournir uniquement le résultat escompté. Précision souhaitée des données : Lors des calculs effectués, indiquer la précision souhaitée (# de décimales). Valide : Lorsque le programme est une composante dun système, il doit fonctionner sur une base individuelle mais aussi à lintérieur du système. Exemple : Calcul de la cotisation syndicale dun employé Régime demploi dun employé Fiable : Il fait ce quon sattend tout le temps. Exemple : Programme de calcul de linverse dune matrice carrée éprouvant de la difficulté lorsque le déterminant est près de 0.

23 Qualités dun programme Complet : Il doit manipuler tous les échantillons de données possibles correctement. Exemple : Calcul de la moyenne des notes à un examen sachant que les notes nont pas encore été saisies. Calcul du nombre de jours ouvrables écoulés depuis le début des travaux de construction dune maison. On doit prendre en compte, le cas échéant, les 2 semaines de vacances de la construction. 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 état de défaillance. Exemple : Erreur survenue lors de la saisie dune donnée au clavier. Utile : à nos besoins.

24 Qualités dun programme Efficace : Sil exige comme ressources des quantités limitées. Exemple : Calcul de … = * = * = Vérifiable : Si lon peut démontrer formellement quil est correct. Maintenance facile : Mise à jour facile. Exemple : Changement de millénaire. Programme bien documenté Impression bien soigné

25 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).Loi de Murphy Il existe de nombreuses variantes de cette loi, basés sur le fait que toute catastrophe possible a une fâcheuse tendance à se produire. La plus connue est sans doute la Loi de la tartine beurrée, selon laquelle "Toute tartine beurrée livrée à elle-même tombera du côté beurré." (Ça marche aussi avec de la confiture, et c'est encore plus efficace 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 lusage déléments qui dépendent dune installation donnée. 7. Nassumer jamais que lordinateur a assumé quelque chose (valeurs par défaut). 8. Vérifier à la main votre programme avant de le faire exécuter.

26 Étapes dans la vie dun 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 dun algorithme. 4. Traduction en un langage de programmation au choix. 5. Mise au point dun programme (validation). 6. Documentation. 7. Maintenance.

27 Familiarisation avec votre ordinateur Ouverture dune session Recherche dun emplacement pour écrire, tester et améliorer votre programme. Création dun nouveau dossier ou répertoire (1). Création dun fichier C ou C++ à lintérieur de ce dossier qui contiendra votre futur 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 le sauvegardant 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 daccents ni les caractères spéciaux \ / : * ? " | pour un nom de fichier ou un dossier. Lespace et le caractère de soulignement _ sont souvent utilisés. Effectuer une dernière sauvegarde sur disquette. Exemple : Premier programme.cpp

28 Copies de sauvegarde de vos fichiers Sauvegardez souvent. Voici quelques règles à garder présentes à lesprit lors de la création de copies de 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 de nouveau très facilement ces fichiers. Attention à la direction de sauvegarde. Ne pas recouvrir un fichier plus récent par une version antérieure.

29 Description dun programme simple Fichier Premier programme.cpp // Mon premier programme en C++. #include void main() { cout << "Cest mon premier programme en C++." << endl; } Cest mon premier programme en C++. Attention : Vous devez saisir les majuscules et les minuscules exactement telles quelles apparaissent. Main, main et MAIN sont distincts lun de lautre. 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ême si ce nest pas conseillé (attention à la mise en page : présenter un programme de façon lisible) : void main(){ cout << "Cest mon premier programme en C++." << endl;

30 Présentation de ce programme élémentaire #include Inclure dans ce fichier le contenu du fichier iostream qui renferme la définition doutils permettant deffectuer des opérations dentrée/ sortie standards (saisie au clavier et affichage à lécran). Note : C exige lutilisation de bibliothèques de fonctions disponibles dans leur forme précompilée (extension.LIB). Pour pouvoir les utiliser, il faut inclure des fichiers en-tête (extension.h) dans nos programmes. Après la compilation, le contenu des bibliothèques est ajouté à notre programme pour former une version exécutable du programme. void main() { cout << "Cest mon premier programme en C++." << endl; } Cela définit une fonction nommée main. Une fonction est un ensemble dinstructions placées entre les accolades { } effectuant une tâche particulière. Tout programme C ou C++ possède une fonction main. Nous verrons plus tard comment définir dautres fonctions.

31 Présentation de ce programme élémentaire cout << "Cest mon premier programme en C++." << endl; Chaque instruction doit obligatoirement se terminer par un point-virgule. cout permet dafficher des données à lécran selon les directives dimpression spécifiées. Lopérateur de sortie << permet de séparer des données et / ou des directives dimpression entre elles. "Cest 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 placer dans ce dernier cas la suite de caractères entre guillemets "main". endl permet de faire un saut de ligne à limpression. Cette instruction permet dafficher à lécran la chaîne Cest 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é.

32 Erreurs de compilation ou de syntaxe #include void main() { cot << "Cest mon premier programme en C++." << endl; } Vous allez obtenir plusieurs messages derreur à la compilation; le compilateur na aucune idée de ce que vous entendez par cot. Lorsque le compilateur rencontre une ou plusieurs erreurs, le programme nest pas traduit en langage machine. Il ny a donc pas de programme à exécuter. Corriger lerreur et compiler à nouveau. Note : Si le compilateur détecte une erreur, il ne sarrête pas immédiatement et tente didentifier autant derreurs que possible. Il se peut que certaines erreurs subséquentes nen soient pas; cela serait dû à une mauvaise interprétation du compilateur.

33 Erreurs de compilation ou de syntaxe #include void main() { cout << "Cest mon premier programme en C++." << endl } Le compilateur vous fournira probablement un seul message derreur plus précis.

34 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 void main() { int entier1, entier2, quotient;// Déclaration. cout << "Entrez le premier entier :" << endl; cin >> entier1;// Lecture du 1 e entier. cout << "Entrez le deuxieme entier :" << endl; cin >> entier2;// Lecture du 2 ième entier. quotient = entier1 / entier2; cout << "Le quotient est :" << quotient << endl; } Entrez le premier entier : 63 Entrez le deuxieme entier : 21 Le quotient est :3

35 Analyse du programme. /* Ce programme lit 2 valeurs entières et affiche leur quotient. Le deuxième entier doit être non nul. */ Lorsquun commentaire tient sur plusieurs lignes, le commentaire débute par /* et se termine par */. Note : Un commentaire nappelle aucune action de la part de lordinateur et le compilateur les ignore. Il est interdit dutiliser des commentaires imbriqués comme par exemple, /* Ceci est /* évidemment */ défendu. */ void main() { // un ensemble de déclarations. // un ensemble dinstructions. } void signifie que la fonction ne retourne aucune valeur à son environnement. () signifie quil ny a aucun paramètre à la fonction.

36 Analyse du programme. int entier1, entier2, quotient;// Déclaration. Il sagit dune déclaration où les mots entier1, entier2 et quotient sont des noms de variable. Une variable est un emplacement en mémoire où il est possible de stocker une valeur pour un programme. Cette déclaration spécifie que les variables entier1, entier2 et quotient sont des données de type int, cest-à-dire des variables qui retiendront des valeurs dentiers, 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 la variable entier1. Lopérateur dentrée >> permet de séparer les données à saisir et / ou des directives de lecture entre elles.Ex. : cin >> x >> y;

37 Analyse du programme. quotient = entier1 / entier2; Il sagit dune instruction daffectation qui calcule le quotient des variables entier1 et entier2, puis affecte le résultat à la variable quotient en utilisant lopérateur daffectation = cout << "Le quotient est :" << quotient << endl; Affiche à lécran la chaîne Le quotient est : suivie de la valeur entière de la variable quotient suivie dun saut de ligne.

38 Erreur dexécution ou de logique Une fois ce programme compilée, vous pouvez lexécuter. Si vous entrez au clavier comme 2 ième valeur entière la valeur nulle, le programme terminera anormalement. Si vous choisissez loption Débogage, un message sera affiché indiquant que lon a tenté deffectuer une division par zéro. Cest une erreur dexécution ou de logique.

39 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 que le 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

40 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éhensibles pour 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

41 Méthode de raffinement successif : degré de raffinement Quand il procède à des raffinements des différentes étapes, le concepteur d'un algorithme doit naturellement savoir où s'arrêter. Autrement dit, il doit savoir quand une étape constitue une primitive adéquate au point de ne pas avoir besoin de raffinement supplémentaire. Cela signifie évidemment qu'il doit connaître quelle sorte d'étape le processeur peut interpréter. Le concepteur de l'algorithme précédent doit savoir que le robot peut interpréter "brancher la bouilloire" ce qui de ce fait n'exige pas de raffinement, mais qu'en revanche, il ne peut pas interpréter "remplir la bouilloire" et que dès lors un raffinement devient nécessaire. Exemple :

42 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers. Soit la suite G définie de la manière suivante : G(0) = 1 G(1) = Noù N est un entier positif, G(2) = N + 2 G(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 21 premiers nombres de la suite G. Vous devez les faire imprimer en « escalier », cest-à-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.

43 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers. 1.Répétez trois fois 1.1{ Lecture dune 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.3Répétez 2 fois lopé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 à { Calcul et affichage de la i ième ligne. } 1.2.2Faire un saut de ligne { Calcul et affichage de la i ième ligne. } Pour chaque indice k allant de j=1,2,…, i-1 j à ( j=1,2,…, i-1 j) + i { Calculer G(k) et conserver cette valeur dans Resultat. } Afficher la valeur de Resultat suivie de 5 espaces.

44 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers {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 alors Conserver dans u, v et w les valeurs de 1, N et N+2 resp Pour chaque valeur de m allant de 3 à k Conserver dans Resultat la valeur de w + N*v + 3*u Placer dans u la valeur de v Placer dans v la valeur de w 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 ?


Télécharger ppt "Introduction à la programmation Introduction à larchitecture des ordinateurs. Aperçu des langages machine et des langages de programmation. Notion de programme."

Présentations similaires


Annonces Google