Utilisation des opérateurs sur les bits en PHP

Dimension: px
Commencer à balayer dès la page:

Download "Utilisation des opérateurs sur les bits en PHP"

Transcription

1 Introduction Comme vous le savez sans doute, un processeur ne connaît ni les nombres entiers ni les nombres réels, ni les chaînes de caractères. La seule chose que votre processeur sait traiter ce sont des bits (binary digit) bref des niveaux électriques. Comme en C, il existe en PHP des opérateurs qui permettent de manipuler directement ces bits contenus dans les variables avec lesquelles nous travaillons quotidiennement en PHP. Pourquoi, me direz vous utiliser ces opérateurs peu attrayants? Eh bien pour les performances. Ils permettent en effet, d'améliorer les performances de leurs scripts en limitant au maximum le nombre d'étapes nécessaires pour parvenir à des instructions compréhensibles par le processeur. Tous les opérateurs sur les bits correspondent à des instructions directement compréhensibles par votre processeur. Bref, ils permettent de mâcher le boulot de l'interpréteur, (pour les langages de scripts ex : PHP) ou des compilateurs pour les langages compilés (C/C+). Rappel de notions élémentaires : comme nous allons manipuler des bits il est important que vous compreniez la notions de poids des bits dans une variable. Le poids d'un bit c'est un peu l'indice de sa position dans le tableau de bit que constitue la variable. 1.2 Exemple En binaire, l'entier 3 s'écrit et 2 s'écrit $a=3; $b=2; $c=$a^$b; $a vaudra 3 soit en binaire $b vaudra 2 soit en binaire $c vaudra 1 soit en binaire On s'aperçoit ici que si $a égale $b, $c vaudra 0. On peut donc trouver une écriture alternative à cette phrase : if($a!=$b) die("\\$a est différents de \\$b" En utilisant Xor on a : if($a^$b) die("\\$a est différents de \\$b" Si $a=18 ( ) les bits à 1 sont les bits de poids 1 et 4. Poids Bits de $a $a se calcule donc de la façon suivante : $a=1*pow(2,4)+1*pow(2,1 ou $a=1*16+1*2; Présentation des divers opérateurs 2 AND (&) 2.1 Introduction Le résultat d'un & entre $a et $b est le suivant : chaque fois que 1 bit de $a, est à 1 en même temps que celui de $b, le résultat retourné voit son bit de même poids passer à Exemple En binaire, l'entier 3 s'écrit et 2 s'écrit XOR (^) 1.1 Introduction Le résultat d'un Xor entre $a et $b est le suivant : chaque fois que 1 bit de $a ne correspond pas au bit de $b de même poids, le résultat retourné voit son bit de même poids passé à 1. NB :On ne prendra en compte que les 8 bits de poids faible de l'entier qui est lui codé sur 32 bits (31 + un bit de signe) $a=3; $b=2; $c=$a&$b; $a vaudra 3 soit en binaire $b vaudra 2 soit en binaire $c vaudra 2 soit en binaire /16/02 1

2 3 OR ( ) 3.1 Introduction Le résultat d'un entre $a et $b est le suivant : chaque fois que 1 bit de $a ou de $b est à 1, le résultat retourné voit son bit de même poids passé à Exemple 5.2 Exemple $a=5; // en binaire $b=$a<<1; $c=$b<<3; En binaire l'entier 5 s'écrit et 3 s'écrit Donc si on a: $a=5; $b=3; $c=$a $b; $a vaudra 5 soit en binaire $b vaudra 3 soit en binaire $c vaudra 7 soit en binaire NOT (~) 4.1 Introduction $a vaudra 5 soit en binaire $b vaudra 10 soit en binaire $c vaudra 80 soit en binaire Remarquez que chaque décalage correspond à une multiplication par 2 de la valeur. 6 Décalage à droite (>>) 6.1 Introduction Cet opérateur permet de décaler les bits d'une variable n fois vers la droite. Le résultat de l'opération correspond non pas aux bits qui sont sorti mais ceux qui sont restés. Les bits insérés (à gauche) valent tous Exemple Le résultat d'un ~ sur la variable $a retourne un strict complément à 1 de $a c'est à dire que chaque bit de $a qui était à 1 passe à 0 et réciproquement. 4.2 Exemple Donc si on a: $a=53; $b=~$a; $a=5; // en binaire $b=$a>>2; $a vaudra 5 soit en binaire $b vaudra 1 soit en binaire Remarquez que chaque décalage correspond à une division entière par 2 de la valeur. $a vaudra soit 53 $b vaudra soit 54 5 Décalage à gauche (<<) 5.1 Introduction Cet opérateur permet de décaler les bits d'une variable n fois vers la gauche. Le résultat de l'opération correspond non pas aux bits qui sont sorti mais ceux qui sont restés. Les bits insérés (à droite) valent tous 0. Globalis Media Systems Siège social : 75, rue de Lourmel Paris. Bureaux et correspondance : 25, rue Thiboumery Paris infos@globalis ms.com ms.com 08/16/02 2

3 Quelques exemples didactiques Laissons de coté (pour un temps) les considérations de performances et voyons des exemples un peu complexes d'utilisation de ces opérateurs. 1 Addition de deux entiers quelconques Rappel pour ceux qui ne sont pas des familiers de la base 2. Lorsqu'on effectue une addition à la main en base 10 (comme en primaire) on calcule de la façon suivante : = =11 je pose 1 et je retiens (retenue)=4 0+1=1 on a alors le résultat escompté (141) En binaire le fonctionnement est a peu près similaire : 3+1 nous donne (3) (1) = (4) Le raisonnement est le suivant : 1+1=10 je pose 0 et je retiens 1, 1+0+1(retenue)=0 je pose 0 et je retiens 1, 0+0+1(retenue)=1 La fonction ci dessous effectue une addition des deux valeurs qui lui sont fournie en paramètres : plus(11,14 Appel de la fonction function plus($a,$b) $a==11 ( ) $b==14 ( ) $test = $a; $test==11 ( ) $a ^= $b; $a==5 ( ) $test==10 ( ) // Où sont $test <<= 1; $test==20 ( ) // Décalage des retenues $b = $test; $b==20 ( ) $test est non null donc on reprend la boucle $test = $a; $test==5 ( ) $a ^= $b; $a==17 ( ) $test <<= 1; $test==4 ( ) // Où sont $test==8 ( ) // Décalage des retenues $b = $test; $b==8 ( ) $test est non null donc on reprend la boucle $test = $a; $test==17 ( ) $a ^= $b; $a==25 ( ) $test <<= 1; $test==0 ( ) // Où sont $test==0 ( ) // Décalage des retenues $b = $test; $b==0 ( ) $test==0 (il n'y a plus de retenues) donc on sort de la boucle return $a // ON renvoit $a donc 25 (11+14) function plus($a,$b) { do { $test = $a; $a ^= $b; // Où sont $test <<= 1; // Décalage des retenues $b = $test; // Propagation des retenues while ($test // retenues? return $a; Pour mieux comprendre le fonctionnement de la fonction suivons l'évolution des variables lors de l'appel de cette fonction avec les paramètres suivants $a=11 et $b=14 08/16/02 3

4 2 Multiplication de deux entiers quelconques Attaquons nous maintenant à la multiplication nous utiliserons lorsque nous en auront besoin la fonction plus($a,$b) que nous avons détaillé plus haut. function mul($a,$b) { $res = 0 ; $i = 0; while($b) { // Teste la valeur du bit de poids // le plus faible de $b if($b & 1) { $tmp = $a << $i; // $tmp=pow(2,$i $res=plus($res,$tmp // $res+=$tmp; // Décalage de $b en vue de tester //le bit suivant $b >>= 1; // Incrémentation de $i en vue de garder // une trace du poids du bit testé ensuite $i = plus($i,1 return $res; Le principe est le suivant, pour ne pas avoir à bouclé 6 fois sur $res+=3; algorithme certes fonctionnel mais bon le temps d'exécution serait proportionnel à la valeur du multiplicateur. Nous allons faire mieux. Pour cela nous allons chercher les puissances de 2 qui composent le multiplicateur ($b) multiplier $a par chacune de ces puissance de 2. Puis faire la sommes des résultats obtenus. Pour mieux comprendre le fonctionnement de la fonction, suivons l'évolution des variables lors de l'appel de cette fonction avec les paramètres suivants $a=3 et $b=6 mul(3,6 Appel de la fonction function mul($a,$b) $a==3 ( ) if($b&1){ $tmp=$a<<$i; $res=plus($res,$tmp $b==1 $tmp=$i; $i=plus($i,1 if($b&1){ $tmp=$a<<$i; $b==3 ( ) On reboucle $b&1 est vrai $a==3, $i==1, donc $tmp==6 $i==2 $res=plus($res,$tmp $res==18 $b>>=1; $i=plus($i,1 return $res; $b==1 ( ) On reboucle $b&1 On rentre dans le if $a==3, $i==2, donc $tmp==12 $b==0 $i==3 $b==0 ( ) On sort de la boucle On renvoie le résultat escompté 18 Quelques exemples concrets 1 Gestion d'articles sur deux colonnes Prenons comme premier exemple la problématique suivante. Imaginons que nous ayons une liste d'articles à afficher sur deux colonnes. Et que nous souhaitions équilibrer le nombre d'articles dans les deux colonnes. Dans notre exemple il y aura 11 articles, on souhaitera donc en avoir 6 dans la colonne de gauche et 5 dans celle de droite. Une approche classique serait la suivante : $nb_articles=11; $nb_a_gauche = $nb_articles/2; $nb_a_gauche = ceil($nb_a_gauche $nb_a_droite = $nb_articles $nb_a_gauche; $res=0 ; $b==6 ( ) $res==0;( ) La nôtre toujours destinée à présenter les opérateurs sur les bits, sera sensiblement différente : $i=0; if ($b&1){ $i==0; ( ) $b==6 ( ) On entre dans la boucle $b & 1 est faux. On ne rentre pas dans le if $b >>= 1; $b==3 ( ) Décalage de $b en vue de tester le bit de poids supérieur $b $i = plus($i,1 $i==1 $nb_articles=11; // permet de récupéré le résultat de la // division entière par 2 $nb_a_gauche = $nb_articles >> 1; // Permet de gérer le cas de d'un nombre impair if($nb_articles & 1) $nb_a_gauche++; $nb_a_droite = $nb_articles $nb_a_gauche; A titre d'information d'après les tests de performance que j'ai pu faire en bouclant fois sur chacun des deux scripts, j'ai observé que le second script mettait environ 10% de temps en moins pour s'exécuter. 08/16/02 4

5 2 Contrôle de droits d'accès d'un utilisateur Imaginons une problématique de contrôle d'accès à des pages. Problématique somme toute assez courante. Admettons que vous ayez quatre pages sur votre site WEB et un menu pour y accéder. Après authentification de votre utilisateur, vous récupérez ses droits d'accès. Vous pourriez stocker ses droits dans un fichier PHP contenant les informations suivantes et dont vous feriez une inclusion. // fichier de droits de l'utilisateur $page1= "OK"; $page2= "NON"; $page3= "OK"; $page4= "OK"; Puis traiter ses différentes chaînes pour afficher ou non le menu. En faisant des tests comme ceux ci. if($page1=="ok") echo "<a href=page1.php>page1</a><br>"; if($page2=="ok") echo "<a href=page2.php>page2</a><br>"; if($page3=="ok") echo "<a href=page3.php>page3</a><br>"; if($page4=="ok") echo "<a href=page4.php>page4</a><br>"; Mais vous pouvez aussi stocker ces informations d'une autre façon. // fichier de droits de l'utilisateur $droits_user =13; // 13 vaut en binaire ce qui signifie dans // notre formalisme que l'utilisateur actuel a // le droit de voir les pages 1,3,4 Et traiter cette information de la façon suivante $masque=1; $i=1; for ($i=1;$i<5;$i++) { if ($droits_user & $masque) { echo "<a href=page$i.php>page$i</a><br>"; // Multiplication par 2 de $masque pour tester // si le bit suivant est à 1 $masque <<= 1; 3 Contrôle de droits avec gestion de groupe Maintenant imaginons que notre application est un peu plus compliquée et les utilisateurs obtiennent leur droits via les groupes auxquels ils appartiennent. L'utilisateur n'a donc plus de droits propres. // Groupes de l'utilisateur $groupe = array( 'redacteur'=> "OK", 'admin'=>"non", 'relecteur'="ok" // Droits rédacteur 'page1'=>"ok", 'page2'=>"non", 'page3'=>"ok", 'page4'=>"non" // Droits administrateur 'page1'=>"ok", 'page2'=>"ok", 'page3'=>"ok", 'page4'=>"ok" // Droits relecteur 'page1'=>"ok", 'page2'=>"non", 'page3'=>"non", 'page4'=>"ok" Notre Utilisateur a donc les droits de voir les pages 1,3,4. Vous pressentez ici que les tests qui vont permettre l'affichage des liens deviennent beaucoup plus complexes. Utilisons maintenant le même principe que précédemment. // Groupes de l'utilisateur $groupes = 5; // $page_redacteur = 5; // Droits rédacteur $page_admin = 15; // Droits administrateur $page_relecteur=9; // Droits relecteur // On récupère les droits des groupes de l'utilisateur // en incluant les bons fichiers de droits, puis on // calcule les droits de l'utilisateur obtenu via // les groupes en faisant $droits_user=$page_redacteur; // $droits_user =$page_relecteur; // ou // = // Enfin on affiche les pages correspondantes $masque = 1; $i = 1; for($i=1;$i<5;$i++) { if(droits_userecho "<a href=page$i.php>page$i</a><br>"; // Multiplication par 2 de $masque pour tester // si le bit suivant est à 1 $masque <<= 1; / Notre formalisme permet de récupérer, en très peu d'opérations, la résultante des droits de l'utilisateur et de l'exploiter de la même manière que précédemment. Conclusion Comme nous venons de le voir, il est possible de faire une utilisation intelligente des opérateurs sur les bits. Cependant, il est relativement difficile de faire une estimation du gain en terme de performances. Néenmoins, comme nous avons pu le constater dans les deux derniers exemples, ils présentent un intérêt fonctionnel réel. Ils ont aussi l'avantage de familiariser un tant soit peu les développeurs avec les couche basse de la programmation. olivier.huet@globalis ms.com 08/16/02 5

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT Les portes logiques Nous avons jusqu ici utilisé des boutons poussoirs et une lampe pour illustrer le fonctionnement des opérateurs logiques. En électronique digitale, les opérations logiques sont effectuées

Plus en détail

Le stockage local de données en HTML5

Le stockage local de données en HTML5 Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Notions fondamentales du langage C# Version 1.0

Notions fondamentales du langage C# Version 1.0 Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage

Plus en détail

Programmation Objet - Cours II

Programmation Objet - Cours II Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Une version javascript sera disponible directement dans le cours prochainement.

Une version javascript sera disponible directement dans le cours prochainement. Author : Cédric Vanconingsloo Ce cours est principalement axé sur la compréhension du fonctionnement d'un ordinateur et l'étude du seul langage qu'il connaisse, le binaire. De ce fait, le cours est relativement

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE Épreuve de cas pratique dans la spécialité correspondant à l'option choisie par le candidat Option D Durée de préparation

Plus en détail

LES DÉTERMINANTS DE MATRICES

LES DÉTERMINANTS DE MATRICES LES DÉTERMINANTS DE MATRICES Sommaire Utilité... 1 1 Rappel Définition et composantes d'une matrice... 1 2 Le déterminant d'une matrice... 2 3 Calcul du déterminant pour une matrice... 2 4 Exercice...

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

COURS WINDEV NUMERO 3

COURS WINDEV NUMERO 3 COURS WINDEV NUMERO 3 01/02/2015 Travailler avec un fichier de données Etude du gestionnaire d analyse, Manipulation des tables mémoires, Manipulation de données, Création d états, Pré requis : Cours WinDev

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Compte-rendu de projet de Système de gestion de base de données

Compte-rendu de projet de Système de gestion de base de données Compte-rendu de projet de Système de gestion de base de données Création et utilisation d'un index de jointure LAMBERT VELLER Sylvain M1 STIC Université de Bourgogne 2010-2011 Reponsable : Mr Thierry Grison

Plus en détail

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3 8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

AWS avancé. Surveiller votre utilisation d EC2

AWS avancé. Surveiller votre utilisation d EC2 10 AWS avancé Dans ce chapitre, nous bâtirons sur les bases que nous avons apprises jusqu ici. Nous étudierons des sujets plus avancés tels que la surveillance de votre utilisation d AWS, l utilisation

Plus en détail

Reporting Services - Administration

Reporting Services - Administration Reporting Services - Administration Comment administrer SQL Server Reporting Services Cet article a pour but de présenter comment gérer le serveur depuis le "portail" de Reporting Services. Nous verrons

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

les Formulaires / Sous-Formulaires Présentation...2 1. Créer un formulaire à partir d une table...3

les Formulaires / Sous-Formulaires Présentation...2 1. Créer un formulaire à partir d une table...3 Présentation...2 1. Créer un formulaire à partir d une table...3 2. Les contrôles :...10 2.1 Le contrôle "Intitulé"...11 2.2 Le contrôle "Zone de Texte"...12 2.3 Le contrôle «Groupe d options»...14 2.4

Plus en détail

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet Projet ISN - dossier réalisé par Randrianarimanana Stéphanie Titre du projet : Site de rencontre le nom de notre site de rencontre : Linkymeet ( tout astérisque* signifie voir annexe) l'équipe : Randrianariamanana

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Module 16 : Les fonctions de recherche et de référence

Module 16 : Les fonctions de recherche et de référence Module 16 : Les fonctions de recherche et de référence 16.0 Introduction L une des fonctions les plus importantes d Excel, c est la possibilité de chercher une valeur spécifique dans un grand nombre de

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP Université de Strasbourg Licence Pro ARS UFR de Mathématiques et Informatique Année 2009/2010 1 Adressage IP 1.1 Limites du nombre d adresses IP 1.1.1 Adresses de réseaux valides Réseaux Locaux TP 04 :

Plus en détail

http://cermics.enpc.fr/scilab

http://cermics.enpc.fr/scilab scilab à l École des Ponts ParisTech http://cermics.enpc.fr/scilab Introduction à Scilab Graphiques, fonctions Scilab, programmation, saisie de données Jean-Philippe Chancelier & Michel De Lara cermics,

Plus en détail

La fonction exponentielle

La fonction exponentielle DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction

Plus en détail

Systèmes de transmission

Systèmes de transmission Systèmes de transmission Conception d une transmission série FABRE Maxime 2012 Introduction La transmission de données désigne le transport de quelque sorte d'information que ce soit, d'un endroit à un

Plus en détail

Pluridisciplinarité. Classe de BTS DATR 1 -----------------------------------------------------------------------

Pluridisciplinarité. Classe de BTS DATR 1 ----------------------------------------------------------------------- Pluridisciplinarité Classe de BTS DATR 1 ----------------------------------------------------------------------- Module M53: Diagnostic de territoire cible dans le secteur des services. -----------------------------------------------------------------------

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

CREG : http://www.creg.ac- versailles.fr/spip.php?article803

CREG : http://www.creg.ac- versailles.fr/spip.php?article803 OUTILS NUMERIQUES Édu-Sondage : concevoir une enquête en ligne Rédacteur : Olivier Mondet Bla. 1 Présentation Parmi les pépites que contient l Édu-Portail, l application Édu-Sondage est l une des plus

Plus en détail

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

Diviser un nombre décimal par 10 ; 100 ; 1 000

Diviser un nombre décimal par 10 ; 100 ; 1 000 Diviser un nombre décimal par 10 ; 100 ; 1 000 Diviser un nombre décimal par 10 ; 100 ; 1 000. 23 1 et 2 Pauline collectionne les cartes «Tokéron» depuis plusieurs mois. Elle en possède 364 et veut les

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Trier les ventes (sales order) avec Vtiger CRM

Trier les ventes (sales order) avec Vtiger CRM Trier les ventes (sales order) avec Vtiger CRM Dans l'activité d'une entreprise, on peut avoir besoin d'un outil pour trier les ventes, ce afin de réaliser un certain nombre de statistiques sur ces ventes,

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

Rafraichissement conditionné d'une page en.net

Rafraichissement conditionné d'une page en.net Rafraichissement conditionné d'une page en.net Test avec AJAX pour rafraichissement En utilisant AJAX, voici une possibilité de faire un rafraichissement conditionné. Nous verrons dans cet article une

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts E3FI ESIEE Paris Systèmes et scripts B. Perret TP : Shell Scripts 1 Remarque générale Lorsque vous cherchez des informations sur Internet, n'oubliez pas que langage de shell script que nous avons vu correspond

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

Les suites numériques

Les suites numériques Chapitre 3 Term. STMG Les suites numériques Ce que dit le programme : Suites arithmétiques et géométriques CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Suites arithmétiques et géométriques Expression du terme

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Couche application. La couche application est la plus élevée du modèle de référence.

Couche application. La couche application est la plus élevée du modèle de référence. Couche application La couche application est la plus élevée du modèle de référence. Elle est la source et la destination finale de toutes les données à transporter. Couche application La couche application

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Les opérations binaires

Les opérations binaires Les opérations binaires Compétences associées A2 : Analyser et interpréter une information numérique Objectifs Etre capable: - De coder les nombres entiers en code complément à 2. - De résoudre les opérations

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

Logiciel de Base. I. Représentation des nombres

Logiciel de Base. I. Représentation des nombres Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) mugwaneza@univmed.fr I. Représentation des nombres Codage et représentation de l'information Information externe formats

Plus en détail

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

TP 2 Réseaux. Adresses IP, routage et sous-réseaux TP 2 Réseaux Adresses IP, routage et sous-réseaux C. Pain-Barre INFO - IUT Aix-en-Provence version du 24/2/2 Adressage IP. Limites du nombre d adresses IP.. Adresses de réseaux valides Les adresses IP

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

CONCEPTION Support de cours n 3 DE BASES DE DONNEES CONCEPTION Support de cours n 3 DE BASES DE DONNEES Auteur: Raymonde RICHARD PRCE UBO PARTIE III. - LA DESCRIPTION LOGIQUE ET PHYSIQUE DES DONNEES... 2 A. Les concepts du modèle relationnel de données...

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

LES TOUT PREMIERS PAS

LES TOUT PREMIERS PAS DESMODO, un logiciel de gestion d idées http://www.desmodo.net/ LES TOUT PREMIERS PAS Desmodo est un logiciel (libre) qui permet, entre autre, de visualiser et de synthétiser, de manière organisée, sous

Plus en détail

1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect

1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect 1 Gestionnaire de Données WORD A4 F - USB / 2014-04-05 / 6020 Alco-Connect Introduction... 4 Comment décrire le logiciel Cosmos?... 4 Quelles sont les fonctions de ce logiciel PC?... 4 Est-il possible

Plus en détail

Télécom Nancy Année 2013-2014

Télécom Nancy Année 2013-2014 Télécom Nancy Année 2013-2014 Rapport 1A Ajout du langage C dans la Programmer's Learning Machine GIANNINI Valentin Loria 615, rue du Jardin Botanique 54600, Villers-Lès-Nancy Maître de stage : QUINSON

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA) La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA) I. L'intérêt de la conversion de données, problèmes et définitions associés. I.1. Définitions:

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad: Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad: Nous allons voir autour d'un exemple concret une facon de modifier les fichiers DBF de l'application. Le but est de modifier

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB) Base de l'informatique Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB) Généralité Comment fonctionne un ordinateur? Nous définirons 3 couches Le matériel

Plus en détail

Calculateur quantique: factorisation des entiers

Calculateur quantique: factorisation des entiers Calculateur quantique: factorisation des entiers Plan Introduction Difficulté de la factorisation des entiers Cryptographie et la factorisation Exemple RSA L'informatique quantique L'algorithme quantique

Plus en détail

Conversion d un entier. Méthode par soustraction

Conversion d un entier. Méthode par soustraction Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Comment ranger automatiquement les messages qui m'arrivent, grâce à et dans Thunderbird seulement.

Comment ranger automatiquement les messages qui m'arrivent, grâce à et dans Thunderbird seulement. Comment ranger automatiquement les messages qui m'arrivent, grâce à et dans Thunderbird seulement. Bien que nous ayons vu dans la documentation «Comment ranger mes messages» de «http://www.lille.iufm.fr/messagerie»

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Stocker des données sur Amazon S3

Stocker des données sur Amazon S3 4 Stocker des données sur Amazon S3 Dans ce chapitre, nous plongeons la tête la première dans Amazon S3, Simple Storage Service (service simple de stockage). Après un aperçu rapide des concepts de S3 les

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail