Algorithme et structure de données

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Langage C# et Plate-forme .NET
Algorithmes et structures de données 7ème cours
C++ 6ème cours Patrick Reuter maître de conférences
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
Approfondissement du langage
Le codage de l ’information
Algorithme et structure de données
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
FLSI602 Génie Informatique et Réseaux
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Expressions et assignations
Les structures de données
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Algorithmique et programmation Informatique Cours 9 12/11/2001.
Question Comment le compilateur fait-il pour évaluer une expression telle que : A + B lorsque A et B sont des données de types arithmétiques différents.
Introduction à la programmation (Java)
Base de programmation Script unity en c#.
CHAINE DE CARACTERES : Définition :
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Principes de programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
C++ : variables Déclaration de variables
LANGAGE C LP A2I IUT St DIE
L’essentiel du langage C
Animateur : Med HAIJOUBI
Structures des données
Informatique, Ordinateur & Programme ...
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Les adresses des fonctions
Ecrire des expressions arithmétiques et logiques
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Les types.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
REPRESENTATION DE L’INFORMATION
Java Les primitives 1. Représentation d’éléments La représentation de n’importe quoi en informatique (chiffres, nombres, lettres, etc.) est composée de.
Module I3 algorithmique et programmation
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours LCS N°4 Présenté par Mr: LALLALI
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Introduction au langage C Les entrées-sorties
Les bases de l’algorithmique
Les entrées-sorties élémentaires
Codage de l’information
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
Chapitre 4b La représentation des nombres.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Département Informatique Codage de l’information Laurent JEANPIERRE IUT de CAEN – Campus 3.
Transcription de la présentation:

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 TP sur machine 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

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 ! 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 … 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@unice.fr

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

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 base

Type de base byte : entier relatif (Z) short : 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 base int : entier relatif (Z) [-2147483648, 2147483647]

float : nombre réel en 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) 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-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 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 base double : nombre décimaux [4.9*10-324, 1.8*10308]

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) 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) 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 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 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 base 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

Types de base Primitive Data Types Integer Floating 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 Textual Logical char 16bits 0 to 65535 one bit : true or false

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

Variable : déclaration int compteur ; float prixHt ; char aChar ; boolean fin ;

Variable : valeur par défaut

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

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 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 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 i = d ; // !!

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 i = (int) d ;

final int A_FINAL_VAR = 10; 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 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 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 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 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 ! ! op op is false & op1 & op2 always evaluates op1 and op2 | op1 | op2 ^ op1 ^ op2 if op1 and op2 are different that is if one or the other of the operands is true but not both

Créer votre première application

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

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 class Hello { public static void main(String[] args) { System.out.println("Hello !"); }

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 > 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" Définir une classe Définir la méthode main Utiliser des méthodes

Définir la classe Hello public class Hello { public static void main(String[] args) { System.out.println("Hello !"); }

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

Utiliser d’autres méthodes … public class Hello { public static void main(String[] args) { System.out.println("Hello !"); }