Algorithmique et structure de données




                                        1
Plan
1. Introduction à l’informatique
2. Notions élémentaires des algorithmes : déclarations,
   entrées/sorties, calcul, affectations
3. Les structures conditionnelles
4. Les structures itératives
5. Les tableaux
6. Les chaines de caractères
7. Les enregistrements
8. Les procédures et fonctions
                                                      2
Chapitre 1 :

Introduction à l’informatique




                                3
1. Représentations des données
• Les informations traitées par un ordinateur peuvent être de
  différents types (texte, nombres, etc.) mais elles sont toujours
  représentées et manipulées par l'ordinateur sous forme binaire.
  Toute information sera traitée comme une suite de 0 et de 1.
  L'unite d'information est le chiffre binaire (0 ou 1), que l'on
  appelle bit (pour binary digit, chiffre binaire).

• Le codage d'une information consiste a établir une
  correspondance entre la représentation externe (habituelle) de
  l'information (le caractère A ou le nombre 36 par exemple), et sa
  représentation interne dans la machine, qui est une suite de bits.

                                                                  4
Changements de bases




                       5
Représentation des entiers




                             6
7
Représentation des nombres
      fractionnaires




                             8
Conversion de et vers la base 10




                                   9
10
11
Conversion bases 2, 8 et 16




                              12
Représentation des caractères




                                13
Code ASCII




             14
2. Architecture d’un ordinateur (1)




                                      15
Architecture d’un ordinateur (2)




                                   16
Mémoire centrale ou principale




                                 17
Processeur



C'est le moteur de l'ordinateur. Il exécute les instructions
contenues dans les programmes. Il le fait de façon plus ou
moins rapide en fonction de la fréquence interne du
processeur. Par exemple un processeur à 3 Ghz effectue
3 milliards d'opérations à la seconde.




                                                               18
Exécution d’instructions




L'unité de commande et de contrôle effectue les opérations suivantes :
1- extraction de l'instruction à exécuter,
2- analyse de cette instruction et liaison avec l'U.A.L. (Unité Arithmétique et Logique) ,
3- recherche des données à traiter dans la mémoire centrale,
4- déclenchement du traitement dans l'U.A.L.,
                                                                                      19
5- rangement des résultats dans la mémoire centrale ou en mémoire auxiliaire
3. Architecture de système informatique




                                     20
• Langage machine : Le langage machine appelé aussi
  langage binaire, c'est avec ce langage que
  fonctionnent les ordinateurs. Il consiste à utiliser deux
  états (représentés par les chiffres 0 et 1) pour coder les
  informations (texte, images etc.).
• Dans le langage machine, le programmeur doit entrer
  chaque commande et toutes les données sous forme
  binaire c'est à dire sous forme de suite d'octets.
• Le programme écrit en langage évolué (C, Pascal)
  sera traduit en langage machine par un programme
  particulier appelé compilateur.

                                                          21
22
23
4. Les types de Langages informatiques

• Langage machine
• Langage assembleur (assembly language)
• Langage évolué
     • Les langages de scripts (langages interprétés)
     • Les langages compilés
• Langage de balisage (langage de marquage)
• Langage de requête

                                                        24
• Le langage évolué est un langage qui accomplit beaucoup pour un
  minimum de code et d'effort de programmation,
• Titre d'exemple : Pascal, Java, C, C++, C#, Visual Basic (ou VB),
  Delphi, Python, Perl, PHP, JavaScript, VBscript, ASP etc.
• Bref la syntaxe des langages évolués est très simplifiée, on y
  trouve par exemple des mots en anglais (if, do while, switch,
  integer, string) donc il est plus accessible et compréhensible aux
  gens que l'assembleur lui même plus accessible que le langage
  machine.
• Ces langages sont traduits en langage machine avant leur
  exécution par un programme compilateur, ces programmes
  fonctionnent ensuite comme s'ils étaient directement écrits en
  langage machine.
                                                                25
Langages évolués de programmation




                                                      26
http://www.info.univ-angers.fr/~gh/hilapr/progs.htm
• Langage de balisage (langage de marquage)
Ces langages reposent sur ce qu'on appelle des balises ou tags,ces
  derniers sont des étiquettes avec lesquelles on peut étiqueter
  des données (mots, texte etc.) pour produire un effet chez eux
  tant en sens (leurs donner du sens : ceci est un paragraphe,
  ceci est un titre, citation etc.) qu'en rendu visuel (italique, gras,
  couleur du texte etc.), on peut étiqueter des données en les
  encadrant par ces balises, parmi ce type de langages il y a le
  HTML (HyperText Markup Language), le XML, le SGML,
  XHTML (Extensible HyperText Markup Language).
Par exemple :
  Pour mettre en italique : <i> texte en italique </i> ;

                                                                     27
• Langages de requêtes
Ces langages qualifient le plus souvent les langages
propres aux bases de données, ils sont représentés
notamment par le SQL (structured query language) en
français langage structuré de requêtes, il permet tout
simplement de gérer une base de données par exemple
l'interroger, y insérer des données ou en supprimer
d'autres, lui demander de faire ressortir des données selon
des critères que je lui fixe.


                                                        28
Paradigme (ou style ou type) des langages
          de programmations
•   Langages impératifs et procéduraux : comme C, …
•   Langages à objets : comme C++, Java,…
•   Langages déclaratifs : comme Prolog,..
•   Langages logiques : comme Prolog,…
•   Langages fonctionnels : comme Lisp,…
•   …

                                                      29
Langages impératifs et procéduraux
• Langages impératifs : une instruction du langage
  correspond à un ensemble d'instructions du langage
• Un programme est formé par plusieurs procédure. Une
  procédure, appelée également fonction, est une suite
  d'instructions devant être effectuée dans un ordre précis.
   En C :                        Int carre ( int b)
    Main ( )                     {
    {                              return (b*b);
      int a, b;                  }
      a=b*b;
      printf(« %d »,a);          Main ()
    }                            { int a;
                                  a= carre (b);
                                 Printf(« %d »,a); }     30
Langages déclaratifs
• Un langage déclaratif ne décrit pas comment
  est réalisée une opération, comme dans un
  langage impératif, mais décrit le problème lui-
  même, sans s'intéresser au contexte.
• Figurent parmi les langages déclaratifs Oz,
  Prolog ou encore Clips.


                                               31
Langages logiques
• Un programme logique est composé de faits et de règles qui sont
  traités par un moteur d'inférence.
• Prolog fut le premier langage de ce type à être fonctionnel sur un
  ordinateur.




                                                                32
Langages fonctionnels
• Dans ce paradigme, l'opération de base n'est pas
  l'affectation, contrairement aux langages impératifs, mais
  l'évaluation de fonctions.

• Par exemple avec Lisp:
   (first '(7 3 10))
           cela donne 7
  (* (+ 2 2) 4)
           cela donne 16

                                                         33
Langages à objets
• Les langages à objets offrent une abstraction à la machine :
  l'objet est une structure sémantique indépendante qui rassemble
  des données et des traitements.
• En se basant sur une méthode de conception à objet et sur un
  langage de modélisation à objet, on peut facilement implanter un
  concept au moyen d'un langage de programmation à objets.
                                             En C++
                            Class Television {
                             int poids;
                             int longueur_diagonale;
                             boolean allume;
                             String Chaine_memorisees;

                                 void eteindre ();
                                 void allumer();
                                 void memoriser_chaines (String chaine);
                            };                                             34
5. Introduction à l’algorithmique
• L'algorithmique est l’ensemble des règles et des techniques qui sont
  impliquées dans la définition et la conception d'algorithmes, c'est à dire
  de processus systématiques de résolution, par le calcul, d'un problème
  permettant de décrire les étapes vers le résultat.
• En d'autres termes, un algorithme est une suite finie et non-ambiguë
  d’opérations permettant de donner la réponse à un problème.
• Un algorithme est une solution informatique indépendant du langage de
  programmation
• Un algorithme est une étape qui précède l’implémentation d’un
  programme permettant de faire un raisonnement sur la suite
  d’instructions nécessaires
• Le style de structure d’algorithme traité dans ce cours s’inspire des
  langages de programmation impératifs et procéduraux
                                                                       35
36
37

Chapitre 1 (algorithme)

  • 1.
  • 2.
    Plan 1. Introduction àl’informatique 2. Notions élémentaires des algorithmes : déclarations, entrées/sorties, calcul, affectations 3. Les structures conditionnelles 4. Les structures itératives 5. Les tableaux 6. Les chaines de caractères 7. Les enregistrements 8. Les procédures et fonctions 2
  • 3.
    Chapitre 1 : Introductionà l’informatique 3
  • 4.
    1. Représentations desdonnées • Les informations traitées par un ordinateur peuvent être de différents types (texte, nombres, etc.) mais elles sont toujours représentées et manipulées par l'ordinateur sous forme binaire. Toute information sera traitée comme une suite de 0 et de 1. L'unite d'information est le chiffre binaire (0 ou 1), que l'on appelle bit (pour binary digit, chiffre binaire). • Le codage d'une information consiste a établir une correspondance entre la représentation externe (habituelle) de l'information (le caractère A ou le nombre 36 par exemple), et sa représentation interne dans la machine, qui est une suite de bits. 4
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    Conversion de etvers la base 10 9
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
    2. Architecture d’unordinateur (1) 15
  • 16.
  • 17.
    Mémoire centrale ouprincipale 17
  • 18.
    Processeur C'est le moteurde l'ordinateur. Il exécute les instructions contenues dans les programmes. Il le fait de façon plus ou moins rapide en fonction de la fréquence interne du processeur. Par exemple un processeur à 3 Ghz effectue 3 milliards d'opérations à la seconde. 18
  • 19.
    Exécution d’instructions L'unité decommande et de contrôle effectue les opérations suivantes : 1- extraction de l'instruction à exécuter, 2- analyse de cette instruction et liaison avec l'U.A.L. (Unité Arithmétique et Logique) , 3- recherche des données à traiter dans la mémoire centrale, 4- déclenchement du traitement dans l'U.A.L., 19 5- rangement des résultats dans la mémoire centrale ou en mémoire auxiliaire
  • 20.
    3. Architecture desystème informatique 20
  • 21.
    • Langage machine: Le langage machine appelé aussi langage binaire, c'est avec ce langage que fonctionnent les ordinateurs. Il consiste à utiliser deux états (représentés par les chiffres 0 et 1) pour coder les informations (texte, images etc.). • Dans le langage machine, le programmeur doit entrer chaque commande et toutes les données sous forme binaire c'est à dire sous forme de suite d'octets. • Le programme écrit en langage évolué (C, Pascal) sera traduit en langage machine par un programme particulier appelé compilateur. 21
  • 22.
  • 23.
  • 24.
    4. Les typesde Langages informatiques • Langage machine • Langage assembleur (assembly language) • Langage évolué • Les langages de scripts (langages interprétés) • Les langages compilés • Langage de balisage (langage de marquage) • Langage de requête 24
  • 25.
    • Le langageévolué est un langage qui accomplit beaucoup pour un minimum de code et d'effort de programmation, • Titre d'exemple : Pascal, Java, C, C++, C#, Visual Basic (ou VB), Delphi, Python, Perl, PHP, JavaScript, VBscript, ASP etc. • Bref la syntaxe des langages évolués est très simplifiée, on y trouve par exemple des mots en anglais (if, do while, switch, integer, string) donc il est plus accessible et compréhensible aux gens que l'assembleur lui même plus accessible que le langage machine. • Ces langages sont traduits en langage machine avant leur exécution par un programme compilateur, ces programmes fonctionnent ensuite comme s'ils étaient directement écrits en langage machine. 25
  • 26.
    Langages évolués deprogrammation 26 http://www.info.univ-angers.fr/~gh/hilapr/progs.htm
  • 27.
    • Langage debalisage (langage de marquage) Ces langages reposent sur ce qu'on appelle des balises ou tags,ces derniers sont des étiquettes avec lesquelles on peut étiqueter des données (mots, texte etc.) pour produire un effet chez eux tant en sens (leurs donner du sens : ceci est un paragraphe, ceci est un titre, citation etc.) qu'en rendu visuel (italique, gras, couleur du texte etc.), on peut étiqueter des données en les encadrant par ces balises, parmi ce type de langages il y a le HTML (HyperText Markup Language), le XML, le SGML, XHTML (Extensible HyperText Markup Language). Par exemple : Pour mettre en italique : <i> texte en italique </i> ; 27
  • 28.
    • Langages derequêtes Ces langages qualifient le plus souvent les langages propres aux bases de données, ils sont représentés notamment par le SQL (structured query language) en français langage structuré de requêtes, il permet tout simplement de gérer une base de données par exemple l'interroger, y insérer des données ou en supprimer d'autres, lui demander de faire ressortir des données selon des critères que je lui fixe. 28
  • 29.
    Paradigme (ou styleou type) des langages de programmations • Langages impératifs et procéduraux : comme C, … • Langages à objets : comme C++, Java,… • Langages déclaratifs : comme Prolog,.. • Langages logiques : comme Prolog,… • Langages fonctionnels : comme Lisp,… • … 29
  • 30.
    Langages impératifs etprocéduraux • Langages impératifs : une instruction du langage correspond à un ensemble d'instructions du langage • Un programme est formé par plusieurs procédure. Une procédure, appelée également fonction, est une suite d'instructions devant être effectuée dans un ordre précis. En C : Int carre ( int b) Main ( ) { { return (b*b); int a, b; } a=b*b; printf(« %d »,a); Main () } { int a; a= carre (b); Printf(« %d »,a); } 30
  • 31.
    Langages déclaratifs • Unlangage déclaratif ne décrit pas comment est réalisée une opération, comme dans un langage impératif, mais décrit le problème lui- même, sans s'intéresser au contexte. • Figurent parmi les langages déclaratifs Oz, Prolog ou encore Clips. 31
  • 32.
    Langages logiques • Unprogramme logique est composé de faits et de règles qui sont traités par un moteur d'inférence. • Prolog fut le premier langage de ce type à être fonctionnel sur un ordinateur. 32
  • 33.
    Langages fonctionnels • Dansce paradigme, l'opération de base n'est pas l'affectation, contrairement aux langages impératifs, mais l'évaluation de fonctions. • Par exemple avec Lisp: (first '(7 3 10)) cela donne 7 (* (+ 2 2) 4) cela donne 16 33
  • 34.
    Langages à objets •Les langages à objets offrent une abstraction à la machine : l'objet est une structure sémantique indépendante qui rassemble des données et des traitements. • En se basant sur une méthode de conception à objet et sur un langage de modélisation à objet, on peut facilement implanter un concept au moyen d'un langage de programmation à objets. En C++ Class Television { int poids; int longueur_diagonale; boolean allume; String Chaine_memorisees; void eteindre (); void allumer(); void memoriser_chaines (String chaine); }; 34
  • 35.
    5. Introduction àl’algorithmique • L'algorithmique est l’ensemble des règles et des techniques qui sont impliquées dans la définition et la conception d'algorithmes, c'est à dire de processus systématiques de résolution, par le calcul, d'un problème permettant de décrire les étapes vers le résultat. • En d'autres termes, un algorithme est une suite finie et non-ambiguë d’opérations permettant de donner la réponse à un problème. • Un algorithme est une solution informatique indépendant du langage de programmation • Un algorithme est une étape qui précède l’implémentation d’un programme permettant de faire un raisonnement sur la suite d’instructions nécessaires • Le style de structure d’algorithme traité dans ce cours s’inspire des langages de programmation impératifs et procéduraux 35
  • 36.
  • 37.