Algorithme et structure de donn - PowerPoint PPT Presentation

1 / 48
About This Presentation
Title:

Algorithme et structure de donn

Description:

Algorithme et structure de donn es IUP1 Miage Objectifs Acqu rir les notions de base de programmation imp rative structures de contr les appels des proc dures ... – PowerPoint PPT presentation

Number of Views:123
Avg rating:3.0/5.0
Slides: 49
Provided by: mmsircNet
Category:

less

Transcript and Presenter's Notes

Title: Algorithme et structure de donn


1
Algorithme et structure de données
  • IUP1 Miage

2
Objectifs
  • Acquérir les notions de base de programmation
    impérative
  • structures de contrôles
  • appels à des procédures
  • récursivité
  • Connaître les bases de la programmation objet
  • Savoir réutiliser du code

3
Combien ? Quand ?
  • Cours/TD
  • 3h par semaine pendant 13 semaines le lundi de 9h
    à 12h
  • TP sur machine
  • 3h de TP par semaine pendant 13 semaines le lundi
    de 13h30 à 16h30

4
Objectifs
  • Connaître les structures de données élémentaires,
    tableaux, piles, files, listes chaînées, arbres
  • Être sensibilisé aux problèmes algorithmiques et
    leur complexité
  • Connaître quelques algorithmes de base (tris,
    techniques "diviser pour régner", ...)

5
Le langage !
  • JAVA, mais son aspect orienté objet sera réduit
    au minimum
  • Il ne s'agit pas d'un cours de programmation Java
    !
  • Cours/TD
  • Alternance cours et exercices d'application
  • sur papier
  • TP sur machine
  • approfondir les structures de données et
    algorithmes du cours
  • faire "tourner" les exercices de TD

6
Pointeurs
  • Ce cours est largement inspiré par
  • Algorithmique et Programmation en tronc commun du
    DEUG
  • cours ASD en IUP1 de Jean-Marc Fédou
  • Tutorial en ligne de Sun
  • Documentation API
  • http//deptinfo.unice.fr/pc
  • pc_at_unice.fr

7
Premiers pas en Java
  • Type de base
  • Variable
  • Méthode
  • Structure de contrôle
  • Chaîne de caractères

8
Type de base
  • Tous les langages de programmation manipulent des
    variables auxquelles sont affectées des valeurs
  • La notion de type permet de
  • définir les valeurs possibles
  • définir les opérations licites

9
Type de base
10
Type de base
  • byte entier relatif (Z)
  • Arithmétique complément à deux sur un octet (8
    bits)
  • -128 , 127
  • short entier relatif (Z)
  • Arithmétique complément à deux sur deux octets
    (16 bits)
  • -65536 , 65535

11
Type de base
  • int entier relatif (Z)
  • -2147483648, 2147483647

12
float nombre réelen virgule Flottante IEEE-754
  • Soit à coder le nombre 3,25 (11,01 en base 2)
  • Normaliser l'écriture en base 2 sous la forme
  • ?(1,).2n
  • 11,01 (1,101).21
  • La représentation IEEE code séparément sur 32
    bits
  • signe (ici )
  • exposant n (ici 1)
  • mantisse (suite de bits après la virgule, ici 101)

13
float nombre réel (norme IEEE-754)
  • Normalisation en base 2 sous la forme
  • ?(1,).2n
  • signe sur le bit de poids fort (0 pour )
  • exposant codé sur 8 bits. En fait, on code sur un
    octet la valeur n127
  • mantisse codée sur les 23 bits de poids faibles

14
float nombre réel (norme IEEE-754)
  • exposant coder sur un octet n127
  • 00000000 ? n127 ? 11111111
  • 0 ? n127 ? 255
  • Exposants interdits
  • 00000000 signifie que le nombre est dénormalisé
  • 11111111 indique que l'on n'a pas affaire à un
    nombre
  • Not a Number (NaN) signale des erreurs de
    calculs, par exemple une division par 0
  • 1 ? n127 ? 254
  • Le plus petit exposant 126
  • le plus grand exposant 127

15
Norme IEEE-754http//babbage.cs.qc.edu/courses/cs
341/IEEE-754.html
  • Programme en langage C qui affiche le code d'un
    nombre flottant
  • / Affichage hexadécimal des 4 octets
  • d'un nombre flottant IEEE /
  • include ltstdio.hgt
  • main()
  • float x
  • unsigned char p (unsigned char )x
  • printf("Entrer un nombre flottant \n")
  • scanf("f", x)
  • printf("x x x x\n",p,(p1),(p2),(p3))

16
Type de base
  • double nombre décimaux
  • 4.910-324, 1.810308

17
char le type caractère
  • Pas de méthode pour stocker directement les
    caractères
  • Chaque caractère possède donc son équivalent en
    code numérique

18
Le code Unicode (1991)
  • code des caractères sur 16 bits
  • Indépendant du système d'exploitation ou du
    langage
  • Quasi-totalité des alphabets existants (arabe,
    arménien, cyrillique, grec, hébreu, latin, ...)
  • Compatible avec le code ASCII
  • http//www.unicode.org

19
Le code ASCII (1960)
  • code ASCII
  • American Standard Code for Information
    Interchange
  • Le code ASCII de base représente les caractères
    sur 7 bits (c'est-à-dire 128 caractères
    possibles, de 0 à 127)

20
Le code ASCII
  • Les codes 0 à 31 ne des caractères de contrôle
  • retour à la ligne (CR)
  • Bip sonore (BEL)
  • Les codes 65 à 90 représentent les majuscules
  • Les codes 97 à 122 représentent les minuscules
  • modifier le 6ème bit pour passer de majuscules à
    minuscules
  • ajouter 32 au code ASCII en base décimale

21
Type de base
  • boolean deux valeurs possibles
  • true (VRAI)
  • false (FAUX)
  • Sil y a du soleil ALORS je vais a la plage
  • SI (soleilVRAI) ALORS aller_a_la_plage
  • SI soleil ALORS aller_a_la_plage

22
Type de base
23
Types de base
Primitive Data Types
Floating
Integer
byte 8bits -128 to 127
float 32bits 1.4E-45 3.4E38
short 16bits -32768 to 32767
double 64bits 4.9E-324 1.8E308
int 32bits -231 to 231-1
long 64 bits -263 to 263-1
Logical
Textual
one bit true or false
char 16bits 0 to 65535
24
Concept de Variable
  • Définition un élément dinformation identifié
    par un nom
  • On doit explicitement indiquer le nom et le type
    dune variable
  • On utilise le nom pour faire référence à
    linformation que la variable contient
  • Le type détermine les valeurs licites pour la
    variable et les opérations autorisées

25
Concept de Variable
  • Pour donner un nom et un type à une variable il
    faut la déclarer
  • type name
  • Une variable a une portée
  • la section de code ou le nom de la variable peut
    être utilisé

26
Variable déclaration
  • int compteur
  • float prixHt
  • char aChar
  • boolean fin

27
Variable valeur par défaut
28
Variable affectation dune valeur
  • Une affectation permet de donner une nouvelle
    valeur à une variable
  • La valeur précédente est PERDUE
  • int compteur
  • compteur 3

29
Variable affectation dun valeur
  • int r 2
  • double pi pi 3.14
  • double perimetre 2pir
  • //déclarer ET affecter
  • char c c
  • boolean pair true
  • int compteur
  • compteur compteur 1

30
  • int maxInteger Integer.MAX_VALUE
  • float maxFloat Float.MAX_VALUE
  • char aChar 'S'
  • boolean fin true
  • S.o.p("Le plus grand integer est "
    maxInteger)
  • S.o.p("Le plus grand float est " maxFloat)
  • S.o.p("Le caractère est " aChar)
  • S.o.p("fin est " fin)

Le plus grand integer est 2 147 483 647 Le
plus grand float est 3.40282e38 Le
caractère est S fin est
true
31
Affectation et Conversion de type
  • Attention, contrairement à C, Java n'autorise pas
    conversions de types, sauf s'il n'y a aucune
    perte de précision
  • un entier peut être promu en double
  • un double ne peut pas être promu en entier

32
Affectation et Conversion de type
  • Un entier peut être promu en double
  • int i 2
  • double d 3.1
  • d i
  • Un double ne peut pas être promu en entier
  • int i 2
  • double d 3.1
  • i d // !!

33
Affectation et Cast
  • Un double ne peut pas être promu en entier
  • int i 2
  • double d 3.1
  • i d // !!
  • Un double peut être forcé en entier
  • int i 2
  • double d 3.1
  • i (int) d

34
Variable final
  • La valeur dune variable déclarée final ne peut
    pas être modifiée après avoir été initialisée
  • Une telle variable est similaire à une constante
    dans les autres langages de programmation
  • Pour déclarer une variable final
  • final int A_FINAL_VAR 10

35
Opérateur Arithmétique
36
Opérateur Arithmétique
  • Le résultat peut dépendre du contexte
  • 25 / 3 -----gt 8
  • //pour la division entière de 25 par 8
  • 25.0 / 3 -----gt 8.3333333333333334
  • 25 / 3.0 -----gt 8.3333333333333334
  • 25 3 -----gt 1
  • //pour le reste de la division de 25 par 8
  • 25 3.1 -----gt 0.1999999999999993
  • // 253.18 0.2

37
Opérateur Relationnel
38
Opérateur Conditionnel
Operator Use Returns true if
op1 op2 op1 and op2 are both true conditionally evaluates op2
op1 op2 either op1 or op2 is true conditionally evaluates op2
! ! op op is false
op1 op2 op1 and op2 are both true always evaluates op1 and op2
op1 op2 either op1 or op2 is true always evaluates op1 and op2
op1 op2 if op1 and op2 are different that is if one or the other of the operands is true but not both
39
Créer votre première application
40
 Le premier programme, Hello, affiche simplement
le texte "Hello !" 
  • Créer un fichier source Hello.java
  • Un fichier source contient du texte, écrit en
    Java
  •  
  • Compiler le source en fichier bytecode
    Hello.class
  • Le compilateur javac, traduit le texte source en
    instructions compréhensibles par la Machine
    Virtuelle Java (JVM)
  •  
  • Exécuter le programme contenu dans le fichier
    bytecode
  • L'interprète java implémente la JVM
  • L'interprète traduit le bytecode en instructions
    exécutables par votre machine

41
Write once, run anywhere
  • La compilation d'un programme, ne génère pas
    d'instructions spécifiques à votre plate-forme
  • Mais du bytecode Java, qui sont des instructions
    de la Machine Virtuelle Java (JVM)
  • Si votre plate-forme (Windows, UNIX, MacOS, un
    browser Internet) dispose dune JVM, elle peut
    comprendre le bytecode

42
Créer le fichier source Java Hello.java
  • class Hello
  • public static void main(String args)
  • System.out.println("Hello !")

43
Compiler le fichier source
  • gt javac Hello.java
  • Si la compilation réussit
  • le fichier Hello.class est créer
  • Ce fichier contient le bytecode

44
Interpréter et Exécuter l'application
  • gt java Hello
  • L'argument de l'interprète est
  • le nom de la classe à exécuter
  • ce nest pas le nom du fichier
  • Faire la distinction M/m

45
Disséquons l'application "Hello"
  • Définir une classe
  • Définir la méthode main
  • Utiliser des méthodes

46
Définir la classe Hello
  • public class Hello
  • public static void main(String args)
  • System.out.println("Hello !")

47
Définir la méthode main
  • public class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
  • Une application Java doit contenir une méthode
    main
  • Appelée en premier par l'interprète
  • main appelle les autres méthodes nécessaires pour
    exécuter l'application

48
Utiliser dautres méthodes
  • public class Hello
  • public static void main(String args)
  • System.out.println("Hello !")
Write a Comment
User Comments (0)
About PowerShow.com