Archive

Archives pour la catégorie ‘Langages’

Facebook lance HipHop, un compilateur PHP

Cela n’aura pas échappé aux plus observateurs : Facebook est construit − plus ou moins − en PHP.

PHP : code interprété ou pseudo-interprété. Sur de petites, moyennes et grandes applications, c’est un langage parfait. Mais sur une application de la dimension de Facebook, qui est une énorme et gigantesque application utilisée par des millions d’utilisateurs simultanément, il est nécessaire de l’optimiser.

Facebook a mis au point une sorte de compilateur pour PHP, baptisé HipHop, qui transforme le code PHP en C++. Grâce à un système en plusieurs couches, le code que l’on écrit en PHP peut ainsi être au final compilé et gagner en rapidité.

HipHop_transformation_processTout ceci est censé être publié en OpenSource, pour le plus grand bonheur de tous, contrairement à certains autres produits bien connus…

Categories: PHP Tags: , , ,

Nouvelle version de Media Library Gallery

Nous avons le plaisir de vous annoncer qu’une nouvelle version du plugin WordPress Media Library Gallery a été publiée !

Ce plugin vous permet d’afficher toutes les images que les posts possèdent en attachement. Idéal pour créer automatiquement une galerie avec toutes les images que vous avez postez sur votre blog !

http://www.cybwarrior.com/wp-content/plugins/downloads-manager/img/icons/winzip.gif download: Media Library Gallery ()
added: 13/12/2009
clicks: 651
description: The very magical WordPress plugin that displays a gallery of all your image attachments! See the related Media Library Gallery WordPress page for more information. La merveilleuse extension WordPress qui affiche une galerie de toutes vos images attachées ! Reportez-vous à la page WordPress associée à Media Library Gallery pour plus d'informations.

Categories: PHP Tags: , ,

Comment mettre facilement en cache le résultat d’une fonction PHP

Voici une petite fonction PHP permettant de mettre facilement en cache ce que renvoie une autre fonction afin de ne pas avoir à l’appeler à chaque fois. Cela permet d’optimiser grandement la vitesse d’exécution des scripts lorsque ceux-ci reposent sur des traitements longs.

Pour l’utiliser, il suffit d’inclure le code du fichier lib_cache (http://www.cybwarrior.com/?file_id=73) et d’appeler la fonction cache de la façon suivante :

function pause($a)
{
sleep($a);

return ’stop’;
}

print cache(3600 * 24, ‘pause’, array(10));

Le premier argument désigne en secondes la fréquence (ou plutôt la période :-) ) à laquelle exécuter la fonction – dans notre cas, tous les jours.

Le deuxième argument est le nom de la fonction. Mais il est aussi possible de passer la méthode d’un objet : c’est très souple. Le fonctionnement repose sur la fonction call_user_func_array. Reportez-vous à la documentation pour plus d’informations.

Le troisième argument est le tableau des arguments à passer à la fonction, le premier élément contenant le premier argument, et ainsi de suite.

Un quatrième argument facultatif peut être ajouté, qui doit être une conjonction des constantes CACHE_REFRESH et CACHE_NO_REFRESH, qui respectivement force le rafraîchissement du cache ou au contraire renvoie le contenu même s’il est expiré.

Résultat : dans notre cas, la fonction prend 10 secondes à s’exécuter. Mais appelée avec la fonction cache, celle-ci n’est en fait exécutée complétement qu’une seule fois par jour, et le reste du temps, le résultat de la fonction contenu en cache est renvoyé.

http://www.cybwarrior.com/wp-content/plugins/downloads-manager/img/icons/default.gif download: PHP Cache (1.68KB)
added: 08/10/2009
clicks: 536
description: Une fonction très utile pour mettre en cache le résultat d'une fonction PHP, afin d'optimiser son code et le rendre plus rapide en ne l'appelant à chaque fois. A very useful function which store in a cache file what an other function returns, in order to optimize the code and make it quicker.

Categories: PHP Tags: ,

Résoudre le problème de liens avec FPDF/phpToPDF

Pour créer des documents PDF avec PHP, il existe la bibliothèque FPDF. Et pour créer des documents PDF avec FPDF encore plus facilement, il existe phpToPDF.

Cependant, en utilisant cette dernière afin de créer un sommaire inséré de manière automatique dans le document, je rencontrai un problème faisant que chaque lien créé après le sommaire voyait sa zone décalée d’une page : le lien était bien ajouté et était cliquable, mais sa zone se situait une page avant.

Après avoir longuement cherché, je suis parvenu à résoudre le problème en modifiant le code de phpToPDF ainsi :

Dans la fonction insertTOC(), modifier par :

//grab it and move to selected location
$n=$this->page;
$n_toc = $n – $tocstart + 1;
$last = array();
$last_links = array();

//store toc pages
for($i = $tocstart;$i <= $n;$i++)
{
$last[]=$this->pages[$i];
$last_links[] = $this->PageLinks[$i];
}

//move pages
for($i=$tocstart – 1;$i>=$location-1;$i–)
{
$this->pages[$i+$n_toc]=$this->pages[$i];
$this->PageLinks[$i + $n_toc] = $this->PageLinks[$i];
}

//Put toc pages at insert point
for($i = 0;$i < $n_toc;$i++)
{
$this->pages[$location + $i]=$last[$i];
$this->PageLinks[$location + $i] = $last_links[$i];
}

Categories: PHP Tags: ,

PHP – Les chaînes de caractères

This entry is part 7 of 7 in the series PHP - Tutoriel

  1. Apostrophes ou guillemets ?
  2. Caractères spéciaux
  3. Here Doc
  4. Accolades

Apostrophes ou guillemets ?

Un chaîne de caractères est contenue soit entre des guillemets (« ), soit entre des apostrophes ().

Les deux lignes suivantes sont donc equivalentes :


print "Hello!";		// Avec des guillemets

print 'Hello!';		// Avec des apostrophes

Quelle est la différence ? La voici : en utilisant des guillemets, les variables contenues à l’interieur de

la chaîne seront évaluées et remplacées par leur valeur à l’instant t.

Ainsi :


$nom = "Raphaël";

print "Je m'appelle $nom";	// Sortie -> Je m'appelle Raphaël

print 'Je m'appelle $nom';	// Sortie -> Je m'appelle $nom

Caractères spéciaux

Comme en C, on peut utiliser l’anti-slash (\) pour echapper des caractères spéciaux, comme par

exemple, un apostrophe ou des guillemets :


print 'It\'s Sunday and I\'ll go to the Church';	// It's Sunday and I'll go to the Church

print "Et il lui cria : \"Bouh!\" et il sursauta";	// Et il lui cria : "Bouh!" et il sursauta

Il existe aussi des caractères qui ont une signification particulière, comme le montre le tableau ci-dessous.

On appelle ceci des séquences echapes.

Les caractères spéciaux en PHP

Sequences

Signification

\n

Nouvelle ligne (LineFeed). Caractère ASCII 10

\r

Retour chariot (Carriage Return). Caractère ASCII 13

\t

Tabulation. Caractère ASCII 9

\\

Anti-slash lui même

\$

Caractère $. Valable uniquement pour les guillemets (")

Here Doc

Ce qui est bien avec PHP, c’est que l’on peut écrire une chaîne de caractères sur plusieurs lignes :


$html = "

	<html>

	<head>

	<title>Ma page Web</title>

	</head>

	<body>

	<h2>Welcome to Paradise!</h2>

	</body>

	</html>

";

Par contre si on veut pouvoir être tout à fait libre d’utiliser n’importe quel caractère dans une chaîne,

comme les guillemets par exemple, on peut utiliser la syntaxe Here Doc heritée de Perl (que j’aime

bien :-) . On débute la chaîne par <<< et un identifiant quelconque. On écrit ensuite notre texte,

puis on termine en ré-écrivant l’identifiant choisi en DEBUT d’une nouvelle ligne, sans oublier le point-virgule

bien sur.

Par exemple :


$html = <<< MON_DOC_HTML

	<html>

	<head>

	<title>Ma page Web</title>

	<meta name="description" content="Ma Page Oueb">

	<meta name="keywords" content="paradise,web,page,perso">

	</head>

	<body>

	<h2 align="center">Welcome to Paradise!</h2>

	</body>

	</html>

MON_DOC_HTML;

Attention cependant : avec cette syntaxe, les variables sont toujours interprétées.

Accolades

Dans une chaîne avec guillemets, les accolades permettent de specifier des noms de variables comme si elles

se situées hors de cette chaîne.


$var = "N'est ce pas ?";

print "Quelle complexitée! ${'v' . 'a' . 'r'}";		// Une concatenation est effectuée 

							// lors de l'analyse

Les accolades sont également utiles pour passer des tableaux mutli-dimensionnels (que nous verrons plus tard) :


$ar = array();

$ar[] = array("fou");

print "C'est $ar[0][0], non ?";		// Provoque une erreur

print "C'est {$ar[0][0]}, non ?";	// OK!
Categories: PHP Tags:

PHP – Les commentaires

This entry is part 6 of 7 in the series PHP - Tutoriel

Les commentaires permettent de donner des indications dans le script, afin de faciliter sa compréhension au

lecteur.

Ils sont particuliérement utiles lorsque l’on travaille à plusieurs sur un même site web, ou bien lorsque

l’on doit parfois relire un script écrit il y a plusieurs mois.

Certaines personnes, faisant surtout partie de la communauté Linux, soutiennent qu’un code écrit clairement,

sans astuces de programmeurs n’a pas besoin de commentaires. Chacun son école…

La syntaxe des commentaires en PHP est à la fois inspirée du C, du C++ et du système d’exploitation Unix/linux.

Voici les differents types. Les commentaires sont ecrits en vert :



# Début du script

/*

	Voici un script merveilleux

	qui sert à donner l'heure à 

	laquelle la page à été chargée

*/

print date("H:M:S");		// On écrit l'heure sous le format H:M:S

# Fin du script

Tous ce qui se trouve à l’interieur d’un commentaire est tout simplement ignoré par l’interpréteur.

Les commentaires avec /* et */ sont hérités du langage C. Comme on le voit, ils

permettent de commenter du code sur plusieurs lignes. Ce type de commentaire peut être utile lors de la

mise au point d’un script. On peut avoir besoin d’ignorer plusieurs lignes de code, sans pour autant avoir

envie de les supprimer.

Les commentaires en // (qui nous viennent du C++) s’achevent avec la fin de la ligne,

comme pour les commentaires débutant avec #. Ces derniers sont souvent utilisés dans des fichiers

de configuration qui initialisent de nombreuses variables (dans des scripts comme phpBB, phpNuke, phpMyAdmin, etc…),

ceci afin de garder un style Unix.

Categories: PHP Tags:

PHP – Les variables

This entry is part 5 of 7 in the series PHP - Tutoriel
  1. Introduction
  2. Variables dynamiques
  3. Références
  4. Types de données

Introduction

Une variable sert à stocker des données temporaires. C’est à dire que ces données seront perdues entre

deux appels du script.

En PHP, la syntaxe des variables est très étendue, car elle est inpirée de plusieurs langages, notament

du Perl et du C.

Ainsi, les Perliens ne seront pas dépaysés, puisqu’en PHP, les variables débutent par le symbole $

(dollars). Les noms des variables peuvent être composés des lettres de l’alphabet, de nombres, et du caractère

de soulignement.

Voici des noms de variables corrects :


$i

$premier_passage

$telephone1

$telephone2

Pour affecter une valeur à une variable, on utilise l’opérateur = (égal).

Le PHP est un langage non typé. Il n’y a donc pas de déclaration de type comme il peut y en avoir en C.

Il suffit d’indiquer la variable, et de lui affecter une valeur :


$password = "jamesbond007";

print $password;

Cette exemple affiche :


jamesbond007

On peut aussi affecter la valeur d’une variable à une autre variable :


$var1 = "JO";

$var2 = $var1;

print $var2;

Cela affiche :


JO

On peut aussi affecter une même valeur à plusieurs variables d’un seul coup, comme en C :


$var1 = $var2 = $var3 = "Waza";

echo $var1, $var2, $var3;

Résultat :


WazaWazaWaza

Variables dynamiques

En C, on entend par variable dynamique (ou plutôt par tableau dynamique), une variable qui peut avoir une

taille modifiable dans le temps.

En PHP, le dynamisme des variables n’a pas le même sens. Il s’agit en fait de pouvoir jouer avec les noms des

variables.

En effet, regarder cet exemple :


$citation = "T'es comme le H de Hawai, tu sers à rien :-) ";

print ${"citation"};

Résultat :


T'es comme le H de Hawai, tu sers à rien :-) 

En peut faire encore plus fort :


$citation = "T'es comme le H de Hawai, tu sers à rien :-) ";

$var = "citation";

print $$var;

Cela nous donne encore :


T'es comme le H de Hawai, tu sers à rien :-) 

Ou encore mieux :


$citation = "T'es comme le H de Hawai, tu sers à rien :-) ";

$var = "citation";

$finalement = "var";

print $$$finalement;

Nous pourrions multiplier les exemples à l’infini (ou presque : ça dépend de la memoire et de la place disponible

sur la pile de votre machine).

Vu comme ça, cela peut paraitre inutile. Mais il peut y avoir quelques applications interessantes, notament

avec l’utilisation de boucles.

Références

Le PHP permet d’établir des références entre variables. Cela peut paraitre similaire aux pointeurs du C,

mais il y a quelques petites différences. En fait, comme il est écrit dans le manuel officiel de PHP, « les

références sont des alias dans la table des symboles. Le nom de la variable et son contenu ont des noms

différents, ce qui fait que l’on peut donner plusieurs noms au même contenu. »

Pour établir une référence, on utilise l’opérateur & (et commercial, ou esperluette :-) devant la variable.

Ainsi :


$hello = "Hello";

$bonjour = "Bonjour";

echo $hello, $bonjour, "<br>";

$hello = &$bonjour;

echo $hello, $bonjour, "<br>";

$hello = "Buenos Dias";

echo $hello, $bonjour, "<br>";

$hello = "Guten Tag";

echo $hello, $bonjour, "<br>";

Résultat :


HelloBonjour

BonjourBonjour

Buenos DiasBuenos Dias

Guten TagGuten Tag

On se rend compte qu’après la ligne $hello = &$bonjour;, on peut utiliser soit la variable $hello,

soit la variable $bonjour, cela revient au même : elles désignent le même contenu.

Cela peut sembler inutile, mais lorsque nous étudierons les fonctions, cela sera plus parlant.

Types de données

Bien que le PHP soit non typé, les données ont cependant des types. Ainsi, on distinguera 8 de "8",

4 de 4.00.

Il existe 6 types de données :

Les types de données dans PHP

Type

Description

Exemple

integer

Nombres entiers

8

string

Chaînes de caractères

"8"

double

Nombre à virgules flottante (nombres décimaux)

8.00

boolean

Valeur logique, soit true, soit false

true

array

Tableaux

array(1, 2, 3);

integer

Nombres entiers

8

object

Objets

class myclass {};

new myclass();

Nous étudierons les types boolean, array et object plus loin.

Pour connaitre le type d'une donnée, on utilise la fonction gettype(). Cette fonction ne prend

qu'un seul argument qui doit être la variable ou la donnée à tester.

Voici un exemple :


class myclass {};

echo	gettype(8), "<br>",

	gettype("8"), "<br>",

	gettype(8.00), "<br>",

	gettype(true), "<br>",

	gettype(array()), "<br>";

	gettype(myclass()), "<br>";

Ce qui nous donne :


integer

string

double

boolean

array

object

Note : on a utilisé la fonction echo sur plusieurs lignes, ce qui est possible et simplifie

les choses.

On peut aussi modifier le type d'une variable. En C, on appelle ceci le casting.

Pour modifier le type de la variable lui même, on utilise la fonction settype(). Voici la syntaxe de

cette fonction, d'après le manuel PHP :


int settype(mixed var, string type)

Le premier argument, var, peut être de n'importe quel type (c'est le but). Le deuxième argument

doit être une chaîne de caractères representant le type dans lequel convertir la variable. La fonction renvoi

true si l'opération de transtypage a été réussie, sinon false.

Exemple :


$pi = 3.141592654858;

echo $pi, "<br>";

settype($pi, "integer");

echo $pi, "<br>";

Résultat :


3.14159265458

3

On peut aussi modifier le type à l'aide de la syntaxe suivante :


$var = (type) $var

On place le type entre parenthèses (sans guillemets) devant la variable.

Ainsi :


$var = 3.14159265458;

$new = (integer) $var;

echo $new;
Categories: PHP Tags:

HTML – Les effets de transitions avec Microsoft Internet Explorer

  1. Le code
    1. Les évenements
    2. Les transitions

Le marché des navigateurs Web se partage principalement en deux : Netscape et Microsoft.
Chacune de ces deux marques a proposé de nouvelles innovations, parfois très interessantes.
Malheuresement, ces innovations sont rarement conformes au spécifications du W3C et à l’esprit de la portabilité.
Par exemple, l’élement <BLINK> de Netscape Navigator ne fonctionne pas avec Microsoft Internet Explorer.
Il en est de même avec <MARQUEE>, mais dans le sens inverse. Et on peut multiplier les exemples, il y en a beaucoup!

Les effets de transitions est un nouveau « concept » signée Microsoft (qui bien sur, ne
fonctionne pas avec Netscape !).
Cette innovation consiste à plus ou moins animer la phase de changement d’une page à une autre. Vous pouvez en avoir la démonstration en cliquant sur ce lien.

Le code

Pour utiliser un effet de transition, il faut utiliser l’élement <META> (voir Les méta-informations et le réferencement).
On utilisera alors l’attribut http-equiv pour déterminer le type d’évenement et l’attribut content pour
le type de transition.
Exemple :

<META http-equiv="Page-Enter" content="revealTransition(Duration=5,Transition=21)">
<!-- Lorsque l'on arrive sur cette page, on voit des barres horizontales
pendant 5 secondes -->

Les évenements

On distingue 4 types d’évenements : l’entrée sur une page, la sortie d’une page, l’entrée sur un site et la sortie d’un site. Chacun de ces évenements
est matérialisé par un « nom de code » :

  • Entrée sur une page : Page-Enter. Cette évenement se produit lorsque la page est chargée.
  • Sortie d’une page : Page-Exit. Se produit lorsque le visiteur quitte la page.
  • Entrée sur un site : Site-Enter. Se produit uniquement lors du chargement de la première page d’un site.
  • Sortie d’un site : Site-Exit. Se produit uniquement lorsque le visiteur appel une page située à l’exterieur du site.

Une fois l’évenement choisi, on doit le placer dans l’attribut http-equiv de la balise <META>

Les transitions

Une transition est configurable selon 2 paramétres : la durée et la transition.
La durée s’exprime en secondes et peut s’échelonner de 0.0 à 60.0 secondes.
Pour les transitions, il y en a 24 possibles, de 0 à 23. Les voici :

Les différents effets de transitions
Index Description Index Description
0 Un carré, de l’extérieur vers l’intérieur 1 Un carré, de l’intérieur vers l’exterieur
2 Un cercle, de l’exterieur vers l’intérieur 3 Un cercle, de l’intérieur vers l’exterieur
4 Effacement, de bas en haut 5 Effacement, de haut en bas
6 Effacement, de gauche à droite 7 Effacement, de droite à gauche
8 Volets verticaux 9 Volets horizontaux
10 Cases d’échiquier, sens horizontal 11 Cases d’échiquier, sens vertical
12 Dissolution aléatoire (neige) 13 Effacement horizontal, vers l’intérieur
14 Effacement horizontal, vers l’exterieur 15 Effacement vertical, vers l’interieur
16 Effacement vertical, vers l’exterieur 17 Effacement, du haut à droite, vers le bas à gauche
18 Effacement, du bas à droite, vers le haut à gauche 19 Effacement, du haut à gauche, vers le bas à droite
20 Effacement, du bas à gauche, vers le haut à droite 21 Rayures horizontales
22 Rayures verticales 23 Effet aléatoire (un parmi les 23 cités)

La transition est définit dans l’attribut content de la balise <META>. Voici la syntaxe de cet attribut :

revealTrans(Duration=TPS,Transition=Index)

ou

blendTrans(Duration=TPS)

Vous devez remplacer TPS par la durée de la transition en secondes, et Index par celui de la transition sélectionnée.

Vous remarquer que pour la 2ème syntaxe, seule la durée est paramétrable. En fait, blendTrans represente une transition
à part entiére. En cinéma, on appel ceci un fondu enchainé.

Categories: HTML Tags:

QBasic – Le clavier

This entry is part 30 of 30 in the series QBasic - Tutoriel
  1. INKEY$
  2. L’interception d’évenements

On a déjà vu que l’on peut à tout moment connaitre l’état d’une touche du clavier avec INKEY$.
Pour ceux qui n’auraient pas suivis à ce moment là, petit rappel.


INKEY$


L’instruction INKEY$ renvoi une chaîne de caractère contenant l’état du clavier.

  • Si aucune touche n’est enfoncée, INKEY$ renvoi une chaîne vide.

  • Si l’utilisateur presse une touche au moment de l’appel de INKEY$, le carctère frappé est
    renvoyé. C’est à dire que si par exemple, l’utilisateur appui sur la touche ‘P’ alors que
    le verouillage majuscule est activé, INKEY$ renvera un P majuscule. Au contraire, si le
    verouillage est inactif, ce sera un p minuscule. Cette remarque est également
    valable pour le pavé numérique.


Grâce à INKEY$, on peut facilement suspendre l’execution d’un programme jusqu’à l’appui sur une
certaine touche par l’utilisateur.

Exemple :

PRINT « Appuyez sur une touche pour continuer »
DO
LOOP UNTIL LEN(INKEY$) ‘ Variante avec LEN(INKEY$) au lieu de INKEY$ <> «  »


L’interception d’évenements


QBasic ne s’arrête pas là avec le clavier. En effet, il possible de traiter les évenements en
provenance du clavier avec une structure semblable à celle étudiée précédement avec la manette
de jeu ou avec la minuterie.

Déja, on peut commencer par affecter une procédure à une touche de fonction. Vous savez, ce sont
les touches situées en haut du clavier : F1, F2…F12.

Pour préciser le sous-programme à executer par chaque touche, on utilise la structure suivante :

ON KEY(numero%) GOSUB Sousprogramme

numero% représente le numéro de la touche de fonction à associer à la procédure.
Le numéro 1 représente la touche F1; le 2, la F2 etc… jusqu’à F10. Pour F11 et F12, lire plus
loin.

Dans notre exemple, on va se limiter à l’utilisation des touches F1 et F2. La première va nous
servir à ouvrir un fichier, et la deuxième à quitter le programme.

ON KEY(1) GOSUB Lire ‘ Assignation du sous programme aux touches
ON KEY(2) GOSUB Quitter
KEY(1) ON ‘ Activation de la touche
KEY(2) ON

DO ‘ On rentre dans une boucle sans fin
LOOP

Lire: ‘ Lecture du fichier
CLS
INPUT « Entrez le nom et le chemin du fichier à ouvrir : « , Fichier$

CLS
PRINT Fichier$
PRINT
OPEN Fichier$ FOR INPUT AS #1
DO
LINE INPUT #1, Texte$
PRINT Texte$
LOOP UNTIL EOF(1) = – 1
CLOSE #1
RETURN

Quitter: ‘ Quitter
END
RETURN


Comme pour la manette de jeu et les minuteries, il ne faut pas oublier d’activer les touches
avec KEY ON. Bien entendu, KEY STOP et KEY OFF existent et ont le même emplois :

  • KEY OFF désactive l’intercéption d’évenements pour la touche précisée.

  • KEY STOP stoppe de façon provisoire l’intercéption d’évenements. Toute fois, si la
    touche est préssée après l’appel de KEY STOP, les sous-programmes correspondants sont quand
    même executés lors de la réactivation de la touche avec KEY ON.


Ce petit programme de lecture de fichier est bien, mais on peut mieux faire. Comment ? Et bien
en affichant un petit menu en bas de l’écran avec le récapitulatif des commandes associées à chaque
touche. Pour cela, il nous faut d’abord affecter une chaîne de caractère à chaque touche utilisée.
La syntaxe est :

KEY Numero%, Texte$

Numero% représente la touche de fonction et Texte$ la chaîne de caractère.
Ensuite, il faudra afficher le menu. Et là, rien de plus simple, on utilise KEY ON. Au
final, notre programme complet sera :

ON KEY(1) GOSUB Lire ‘ Assignation du sous programme aux touches
ON KEY(2) GOSUB Quitter
KEY(1) ON ‘ Activation de la touche
KEY(2) ON

KEY 1, « Lire un fichier » ‘ Affectation d’un texte au touche de fonction
KEY 2, « Quitter »

KEY ON ‘ Affichage du menu

DO ‘ On rentre dans une boucle sans fin
LOOP

Lire: ‘ Lecture du fichier
CLS
INPUT « Entrez le nom et le chemin du fichier à ouvrir : « , Fichier$

CLS
PRINT Fichier$
PRINT
OPEN Fichier$ FOR INPUT AS #1
DO
LINE INPUT #1, Texte$
PRINT Texte$
LOOP UNTIL EOF(1) = – 1
CLOSE #1
RETURN

Quitter: ‘ Quitter
END
RETURN


Lors de l’execution du programme vous remarquer que l’affichage des textes est limité à 6 caractères
maximum.

Vous remarquez aussi que le menu n’est pas éffacé, même lors de l’appel à CLS.

Si on avez voulu masquer le menu, on aurrait fait appel à KEY OFF.

Petite chose : les touches F11 et F12 ne sont pas associées aux touches 11 et 12, mais respectivement
au touches numéros 30 et 31.

Mais alors qu’elles touchent peuvent bien représenter les numéros à partir de 11 ?


  • 11, flêche HAUT

  • 12, flêche GAUCHE

  • 13, flêche DROITE

  • 14, flêche BAS


Ensuite, de 15 jusqu’à 25, ce sont des touches qui peuvent être définies par l’utilisateur. Ça
peut dans certains cas (les jeux ?) s’averer bien pratique.

Pour définir une touche, on procéde ainsi :

  1. D’abord, on choisi un numéro libre.

  2. Si on veut qu’une touche soit associée à une certaine combinaison, par exemple avec ALT
    pour activer un menu plus élaboré que celui vu ci-dessus, il faut utiliser le code ASCII
    approprié :

    • CHR$(0) : aucune touche n’est associée

    • CHR$(1) : touche majuscule gauche

    • CHR$(3) : touche majuscule droite

    • CHR$(4) : touche Control (CTRL)

    • CHR$(8) : touche ALT

    • CHR$(32) : vérouillage minuscule

    • CHR$(64) : vérouillage majuscule


  3. Pour finir, grâce au précieux tableau des codes de balyage clavier inclu dans l’aide en
    ligne de QBasic, on regarde le code de la touche choisie.


Maintenant, on combien c’est trois étapes et on écrit :

KEY Numero%, CHR$(Combinaison%) + CHR$(Balayage%)

Pour affecter un évenement à la touche P, dont le code de balayage est 25, sans combinaison de
touche, on va donc écrire :

KEY 15, CHR$(0) + CHR$(25) ‘ Définition de la touche
ON KEY(15) GOSUB Boom ‘ Affectation du sous programme ‘Bug’ à la touche P
KEY(15) ON ‘ Activation de la touche

PRINT « Appuyez sur la touche P pour entendre un Boom »
DO
LOOP

Boom: ‘ ET boom !
SOUND 37, 5
END
RETURN


Il faut que le verouillage numérique et majuscules soit inactif pour que cet exemple fonctionne.

Categories: QBasic Tags:

QBasic – Le texte

This entry is part 14 of 30 in the series QBasic - Tutoriel
  1. LOCATE
  2. CSRLIN
  3. POS
  4. VIEW PRINT
  5. PRINT USING
  6. LEN, LEFT$, RIGHT$, MID$
  7. La table de caractères ASCII
  8. Espaces et tabulations
  9. L’instruction STRING$
  10. LTRIM$ et RTRIM$
  11. La casse…

Vous savez déjà qu’il est très aisé d’afficher du texte avec QBasic, grâce à l’instruction
PRINT. Mais vous êtes bien loin d’imaginer les fabuleuses possibilités de traiter le texte avec
Basic.


LOCATE


L’instruction LOCATE permet de positionnez le curseur à un endroit choisi par le programmeur.
Curieusement, lorsqu’on l’utilise, il faut spécifier d’abord les Y, puis les X. Par exemple,
pour écrire ‘Hello, It’s me !‘ à la 5 ligne et à la 15 colonne, il faudra écrire :

LOCATE 15, 5
PRINT « Hello, It’s me ! »

Si on veut, on peut afficher ou pas le curseur en écrivant 1 ou 0 en troisième argumant :

LOCATE 15, 5, 1′ Appuyez sur une touche pour continuer_
PRINT « Hello, It’s me ! »

On peut aussi définir la hauteur de ce curseur (très peut utilisé) grâce au quatrième et
cinquième argument.

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »


CSRLIN


Cette instruction retourne le numéro de la ligne où se trouve le curseur :

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »
PRINT « Le curseur est sur la ligne « ; CSRLIN


POS


POS renvoi le numéro de la colonne où se trouve le curseur. Curieusement, il faut
écrire un nombre quelconque dans les parenthèses suivant POS.

LOCATE 15, 5, 1, 0, 31′ Le curseur est un carré
PRINT « Hello, It’s me ! »
PRINT « Le curseur est sur la ligne « ; CSRLIN
PRINT « Le curseur est sur la colonne « ; POS(0)’ On a écrit 0, mais on aurrait pu
‘ écrire 666


VIEW PRINT


VIEW PRINT permet de redimensionner la fenêtre texte. On indique la première ligne,
puis la deuxième, avec TO entre les deux :

CLS
VIEW PRINT 5 TO 15
PRINT « Ce texte est écrit sur la première ligne de la fenêtre texte »


PRINT USING


PRINT USING affiche un texte (ou un nombre) suivant un format spécifié. Il vous faut
pour cela vous référer au tableau suivant :













































FORMATAGE D’UNE EXPRESSION NUMERIQUE
Caractères Effet
# Position d’un chiffre
. Positon du point décimal
, Doit être placée à gauche du point décimal. Il affiche une virgule tous les trois chiffres
+ Affiche le signe du nombre
^^^^ Ecriture scientifique (format exponentiel)
- Placé après la chaine. Affiche – après les nombres négatifs.
$$ Affiche $ à la gauche du nombre
** Remplace les espace de tête pas *
**$ Applique ** et $$
























FORMATAGE D’UNE EXPRESSION CHAÎNE DE CARACTÈRES
Caractères Effet
& affiche toute la chaîne
! Affiche seulement le premier caractère de la chaîne
\   \ Affiche les n + 2 premiers caractères de la chaîne, où n est le nombre d’espaces entre les deux barres.
_ Affiche le caractère suivant




Concrétement, qu’est ce que ça donne? Observez l’exemple suivant :

a = 3.14159265458#
a$ = « Hello, It’s me ! »
CLS
PRINT USING « #.## »; a
PRINT USING « ############^^^^ »; a
PRINT USING « +##.## »; a
PRINT USING « & »; a$
PRINT USING « ! »; a$
PRINT USING « \\ »; a$
PRINT USING « \ \ »; a$


LEN, LEFT$, RIGHT$, MID$


LEN, LEFT$, RIGHT$ et MID$ permettent de traiter facilement les chaînes de caractères.

  • LEN renvoi le nombre de caractère que contient une châine :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    PRINT « Vous avez écrit « ; LEN(Texte$);  » caractères. »

  • LEFT$ renvoi n caractères de la chaîne en partant de la gauche :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    INPUT « Combien de caractère de la gauche voulez-vous « ; C
    PRINT LEFT$(Texte$, C)

  • RIGHT$ renvoi n caractères de la chaîne en partant de la droite :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    INPUT « Combien de caractère de la droite voulez-vous « ; C
    PRINT RIGHT$(Texte$, C)

  • MID$ renvoi n caractères à un endroit spécifié de la chaîne :

    CLS
    INPUT « Entrez du texte, n’importe quoi : « , Texte$
    FOR i = 1 TO LEN(Texte$)
    PRINT « Caractère « ; i;  » : « ; MID$(Texte$,i ,1)
    NEXT i


La table de caractères ASCII


La table de caractères ASCII est une table qui regroupe 256 caractères spéciaux, numérotés de
0 à 255. Cette table est accéssible à tout moment par le biais de l’aide en ligne de QBasic:
Appuyez sur Shift + F1, double cliquez sur ‘Table des matières‘, puis sur ‘Codes de caractères
ASCII
‘ dans le cadre Référence.

Pour afficher ces caractères, on peut procéder de plusieurs façons:

  • De cette page d’aide, on peut copier le caractère désiré dans le presse papier grâce au
    menu ‘Edition’, puis le coller entre guillemets dans une instruction PRINT.

  • On peut afficher la plupart (je dis bien la plupart) de ces caractères directement en
    maintenant la touche ‘ALT’ enfoncée, puis en tapant le code correspondant au caractère.

  • On peut utiliser l’instruction CHR$


Pour utiliser l’instruction CHR$, il suffit d’écrire le code du caractère entre parenthèses
à la suite de CHR$. Le code suivant affiche tous les caractères de la table l’un à la suite de
l’autre:

CLS
FOR i = 0 TO 255
PRINT CHR$(i);
NEXT i

Au contraire, pour retrouver le code d’un caractère, il faut utiliser l’instruction ASC.
La programme suivant retourne le code du caractère écrit. Remarquer l’utilisation de LEFT$ :

INPUT « Entrez un caractère (seul le premier est pris en compte!) : « , Char$
Char$ = LEFT$(Char$, 1)
PRINT ASC(Char$)’ Utilisation de ASC


Espaces et tabulations


Pour afficher des espaces, le plus simple serait d’utiliser l’instruction PRINT ainsi :
PRINT  » « .

Ca marche, met admettons que le nombre d’espace varie a un moment du programme pour une raison
ou pour une autre? C’est pourquoi il existe l’instruction SPACE$ qui permet d’afficher un nombre n
d’espaces. Et ce nombre n peut varier. Le programme suivant écrit ‘Robert‘ puis ‘Dupont‘ 5
espaces plus loin :

PRINT « Robert »; SPACE$(5); « Dupont »

Dans ce cas là, on aurait pu utiliser l’instruction SPC qui a le même effet.
PRINT « Robert »; SPC(5); « Dupont » est équivalent.
Mais SPC n’est utilisable que dans une instruction PRINT. Autrement,
une erreur est provoquée. Par exemple :

Chaine$ = SPC(17)’ ATTENTION! Ce code est faut et provoque une erreur!

On lui préferera donc SPACE$.



Pour les tabulations, ont utilise l’instruction TAB, tout simplement, suivi du numéro
de la colonne. Le programme suivant illustre les possibilités de mise en page offertent par TAB :

CLS
PRINT TAB(25); « Au grand Bazar »
PRINT
PRINT « Article »; TAB(40); « PRIX »
PRINT STRING$(80, « - ») ‘ Nous détailleront l’instruction
PRINT « Ducati 916″; TAB(40); « 120 000 francs » ‘ STRING$ ci après
PRINT « Melon »; TAB(40); « 10 francs la pièce »
PRINT « L’Equipe »; TAB(40); « 4,90 francs »
PRINT « PlayStation »; TAB(40); « 790 francs. »
PRINT « Super »; TAB(40); « 8,76 francs le litre :(  »
PRINT STRING$(80, « - »)

Grâce aux tabulations, on peut créer des colonnes régulières.


L’instruction STRING$


L’instruction STRING$ permet de répeter un certain nombre de fois un caractère.
Avouez que dans l’exemple ci-dessus, il auraît tout de même fallut écrire précisément 80 fois
le caractère ‘-‘.


LTRIM$ et RTRIM$


Nous avons appris a rajouter des espaces. Ce serait bête de ne pas savoir les enlever, non ?
Les instructions LTRIM$ et RTRIM$ vont y remédier.

  • LTRIM$ (avec un L comme LEFT) supprime les espaces de gauche.

  • RTRIM$ (avec un R comme RIGHT) supprime les espaces de droite.


Exemple:

Chaine$ = SPACE$(5) + « Il y a 5 espaces de chaque cotés » + SPACE$(5)
PRINT « Au départ : »
PRINT Chaine$
Chaine$ = RTRIM$(Chaine$)
PRINT « Après RTRIM$ : »
PRINT Chaine$
Chaine$ = LTRIM$(Chaine$)
PRINT « Après LTRIM$ : »
PRINT Chaine$


La casse…


On appele casse la façon dont est écrite un texte, selon qu’il soit en MAJUSCULES (ou CAPITAL,
je ne vois pas la différence) ou en minuscules. On utilise alors LCASE$
ou UCASE$ suivant l’effet recherché.

  • LCASE$ (avec un L comme LOW) transforme la chaine en minuscules.

  • UCASE$ (avec un U comme UP) transforme la chaine en majuscule.


Exemple:

Chaine$ = « ceci EST une CHAINE où LA cAsSe EsT DIffErrEnTTe »
PRINT « Avant transformations : »
PRINT Chaine$
PRINT « Avec UCASE$ : »
PRINT UCASE$(Chaine$)
PRINT « Avec LCASE$ : »
PRINT LCASE$(Chaine$)

Remarquez que le caractère accentué (ici ù) n’a pas changé.

Categories: QBasic Tags: