Algorithme et structure de donn es l.jpg
This presentation is the property of its rightful owner.
Sponsored Links
1 / 48

Algorithme et structure de données PowerPoint PPT Presentation


  • 291 Views
  • Uploaded on
  • Presentation posted in: General

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 récursivité Connaître les bases de la programmation objet Savoir réutiliser du code. Combien ? Quand ?. Cours/TD

Download Presentation

Algorithme et structure de données

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Algorithme et structure de donn es l.jpg

Algorithme et structure de données

IUP1 Miage


Objectifs l.jpg

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


Combien quand l.jpg

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


Objectifs4 l.jpg

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", ...)


Le langage l.jpg

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


Pointeurs l.jpg

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

  • [email protected]


Premiers pas en java l.jpg

Premiers pas en Java

  • Type de base

  • Variable

  • Méthode

  • Structure de contrôle

  • Chaîne de caractères


Type de base l.jpg

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


Type de base9 l.jpg

Type de base


Type de base10 l.jpg

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]


Type de base11 l.jpg

Type de base

  • int : entier relatif (Z)

    [-2147483648, 2147483647]


Float nombre r el en virgule flottante ieee 754 l.jpg

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)


Float nombre r el norme ieee 754 l.jpg

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 n+127

    • mantisse codée sur les 23 bits de poids faibles


Float nombre r el norme ieee 75414 l.jpg

float : nombre réel (norme IEEE-754)

exposant : coder sur un octet n+127

00000000  n+127  11111111

0  n+127  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  n+127  254

    • Le plus petit exposant ­126

    • le plus grand exposant +127


Norme ieee 754 http babbage cs qc edu courses cs341 ieee 754 html l.jpg

Norme IEEE-754http://babbage.cs.qc.edu/courses/cs341/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 <stdio.h>

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,*(p+1),*(p+2),*(p+3));

}


Type de base16 l.jpg

Type de base

  • double : nombre décimaux

    [4.9*10-324, 1.8*10308]


Char le type caract re l.jpg

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


Le code unicode 1991 l.jpg

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


Le code ascii 1960 l.jpg

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)


Le code ascii l.jpg

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


Type de base21 l.jpg

Type de base

  • boolean : deux valeurs possibles

    • true (VRAI)

    • false (FAUX)

  • S’il y a du soleil ALORS je vais a la plage

  • SI (soleil==VRAI) ALORS aller_a_la_plage

  • SI soleil ALORS aller_a_la_plage


Type de base22 l.jpg

Keyword

Description

Size/Format

(integers)

byte

Byte-length integer

8-bit two's complement

short

Short integer

16-bit two's complement

int

Integer

32-bit two's complement

long

Long integer

64-bit two's complement

(real numbers)

float

Single-precision floating point

32-bit IEEE 754

double

Double-precision floating point

64-bit IEEE 754

(other types)

char

A single character

16-bit Unicode character

boolean

A boolean value

true or false

Type de base


Types de base l.jpg

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 -2^31 to 2^31-1

long 64 bits -2^63 to 2^63-1

Logical

Textual

one bit : true or false

char 16bits 0 to 65535


Concept de variable l.jpg

Concept de Variable

Définition : un élément d’information identifié par un nom

  • On doit explicitement indiquer le nom et le type d’une variable

  • On utilise le nom pour faire référence à l’information que la variable contient

  • Le type détermine les valeurs licites pour la variable et les opérations autorisées


Concept de variable25 l.jpg

Concept de Variable

  • Pour donner un nom et un type à une variable il faut la déclarer

    typename

  • Une variable a une portée

    • la section de code ou le nom de la variable peut être utilisé


Variable d claration l.jpg

Variable : déclaration

int compteur ;

float prixHt ;

char aChar ;

boolean fin ;


Variable valeur par d faut l.jpg

Variable : valeur par défaut


Variable affectation d une valeur l.jpg

Variable : affectation d’une valeur

  • Une affectation permet de donner une nouvelle valeur à une variable

  • La valeur précédente est PERDUE

    int compteur ;

    compteur = 3 ;


Variable affectation d un valeur l.jpg

Variable : affectation d’un valeur

int r = 2 ;

double pi ; pi = 3.14 ;

double perimetre = 2*pi*r ;

//déclarer ET affecter

char c = ’c’ ;

boolean pair = true;

int compteur ;

compteur = compteur +1 ;


Slide30 l.jpg

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.40282e+38

Le caractère est : S

fin est : true


Affectation et conversion de type l.jpg

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


Affectation et conversion de type32 l.jpg

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 ; // !!


Affectation et cast l.jpg

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 ;


Variable final l.jpg

Variable final

  • La valeur d’une 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;


Op rateur arithm tique l.jpg

Operator

Use

Description

+

op1 + op2

Adds op1 and op2

-

op1 - op2

Subtracts op2 from op1

*

op1 * op2

Multiplies op1 by op2

/

op1 / op2

Divides op1 by op2

%

op1%op2

Computes the remainder of dividing op1 by op2

Opérateur Arithmétique


Op rateur arithm tique36 l.jpg

Opérateur Arithmétique

  • Le résultat peut dépendre du contexte

    25 / 3 -----> 8

    //pour la division entière de 25 par 8

    25.0 / 3 -----> 8.3333333333333334

    25 / 3.0 -----> 8.3333333333333334

    25 % 3 -----> 1

    //pour le reste de la division de 25 par 8

    25 % 3.1 -----> 0.1999999999999993

    // 25=3.1*8 + 0.2


Op rateur relationnel l.jpg

Operateur

Use

Returns true if

>

op1 > op2

op1 is greater than op2

>=

op1 >= op2

op1 is greater than or equal to op2

<

op1 < op2

op1 is less than op2

<=

op1 <= op2

op1 is less than or equal to op2

==

op1 == op2

op1 and op2 are equal

!=

op1 != op2

op1 and op2 are not equal

Opérateur Relationnel


Op rateur conditionnel l.jpg

Opérateur Conditionnel


Cr er votre premi re application l.jpg

Créer votre première application


Le premier programme hello affiche simplement le texte hello l.jpg

Le premier programme, Hello, affiche simplement le texte "Hello !" 

  • Créer un fichier sourceHello.java

    Un fichier source contient du texte, écrit en Java

  • Compiler le source en fichier bytecodeHello.class

    Le compilateurjavac, traduit le texte source en instructions compréhensibles par la MachineVirtuelle 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


Write once run anywhere l.jpg

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 d’une JVM, elle peut comprendre le bytecode


Cr er le fichier source java hello java l.jpg

Créer le fichier source Java Hello.java

class Hello {

public static void main(String[] args) {

System.out.println("Hello !");

}

}


Compiler le fichier source l.jpg

Compiler le fichier source

> javac Hello.java

Si la compilation réussit

  • le fichier Hello.class est créer

  • Ce fichier contient le bytecode


Interpr ter et ex cuter l application l.jpg

Interpréter et Exécuter l'application

> java Hello

L'argument de l'interprète est

  • le nom de la classe à exécuter

  • ce n’est pas le nom du fichier

    Faire la distinction M/m


Diss quons l application hello l.jpg

Disséquons l'application "Hello"

  • Définir une classe

  • Définir la méthode main

  • Utiliser des méthodes


D finir la classe hello l.jpg

Définir la classe Hello

public class Hello {

public static void main(String[] args) {

System.out.println("Hello !");

}

}


D finir la m thode main l.jpg

Définir la méthodemain

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


Utiliser d autres m thodes l.jpg

Utiliser d’autres méthodes …

public class Hello {

public static void main(String[] args) {

System.out.println("Hello !");

}

}


  • Login