Blog

Connaître son adresse IP sur Linux

Cet article est le premier d’une série d’articles très cours qui expliquent comment réaliser des actions sur un système Linux en ligne de commande. Vous découvrirez ainsi qu’il est possible de faire énormément de choses, bien plus qu’on ne pourrait le croire. Je reste ouvert aux suggestions d’articles et aux questions.

Dans cet article, je vais vous montrer comment obtenir l’adresse IP (ou les adresses) de votre machine Linux en ligne de commande.

Ouvrez votre terminal et tapez la commande ifconfig -a. Vous devriez obtenir un affichage comme suit:

eth0      Link encap:Ethernet  HWaddr 08:00:27:0c:2a:2a
          inet adr:192.168.20.25  Bcast:192.168.20.255  Masque:255.255.255.0
          adr inet6: fe80::a00:27ff:fe0c:2a2a/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:173 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:18314 (17.8 KiB)  TX bytes:7177 (7.0 KiB)

lo        Link encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

Si vous ne savez pas quelle valeur prendre, sachez qu’en générale l’interface réseau par défaut se nomme eth0 sur un Linux et l’adresse IP est la valeur de inet adr: soit dans le cas présent 192.168.20.25.

Connaître l’adresse IP de son ordinateur avec Windows 7

Un technicien vous demande quelle est l’adresse IP de votre ordinateur? Aouch! Vous l’aviez bien noté sur un post-it, mais il semble qu’il ait pris son envol lors de la dernière ouverture de fenêtre puisque vous ne le trouvez plus.

Allez! Point d’inquiétude, je vais vous sortir de là en quelques clics.

Cliquez sur votre menu démarrer, puis, dans la partie située à gauche du bouton Arrêter dans une case marquée Rechercher les programmes et fichiers représentée avec une petite loupe, tapez: cmd puis sur entrer.

win7 adresseip

Si tout se passe bien, un terminal de commande noir devrait apparaître à l’écran. (voir l’image ci-dessous)

Dans ce terminal, tapez la commande suivante: ipconfig et relevez la valeur de la ligne Adresse IPv4. Et voilà le tour est joué, vous pouvez à présent fermer cet hideuse fenêtre et reprendre une activité normale.

win7 adresseip 02

Connaître le nom réseau de son ordinateur avec Windows 7

Quel est le nom de votre ordinateur? Aïe! La question piège du technicien amer quand on lui dit qu’on a un problème. Ne vous inquiétez pas, dans cet article, je vais vous montrer comment on peut obtenir cette informations en quelques clics seulement.

Allez! On s’arme de courage et si tout se passe bien en trois clics nous sommes sortis d’affaire.

1er clic : Cliquez sur votre menu démarrer. (ouf!)

2eme clic : Faîte un clic droit sur Ordinateur. (houl ça se corse)

3eme clic : Cliquez ensuite sur Ordinateur et dans la fenêtre qui apparaît (voir image ci-dessous) la ligne qui nous intéresse s’intitule Nom de l’ordinateur.

win7 nom pc

Et voilà, le calvaire est terminé, vous pourrez répondre à la question de votre technicien.

Utiliser Linux sans réinstaller votre ordinateur

Linux c’est quoi ?

Linux est un système d’exploitation libre de droit. Libre de droit, ça veut dire qu’il n’appartient à personne. Il fait partie du domaine public.

D’ailleurs ce système est déposé sous la licence publique générale GNU (GPL).

Attention toutefois, même si c’est souvent le cas, cela ne rime pas automatiquement avec gratuité. Certaines distributions comme Red Hat sont payantes.

Vous devez certainement connaître des logiciels libres comme OpenOffice ou Libre Office, Firefox, Gimp, Inkscape ou encore VLC. Et ce ne sont là que quelques exemples parmi des bibliothèques entières de logiciels libres. Un système d’exploitation, c’est un ensemble de fonctionnalités qui permettent aux utilisateurs d’exploiter les capacités de leur machine. Cela peut être des utilitaires graphiques qui fonctionneront bien souvent avec des fenêtres et l’interaction de la souris, ou bien des commandes exécutées dans un terminal. Un terminal ??? Oui vous savez, ces écran noirs dans lesquels on voit les pirates taper des choses incompréhensibles à la télévision… Même si cela a été le cas pendant de nombreuses années, Linux n’est plus aujourd’hui un système exclusivement réservé à un public d’experts et de professionnels. Certains d’entre vous ont sans doute déjà utilisé des logiciels libres provenant du monde Linux sans le savoir. Sachez que vous retrouverez ces mêmes logiciels sur un système d’exploitation Linux et ils fonctionneront exactement de la même manière. En somme vous ne prenez aucun risque à essayer ce système.

De plus, je suis sûr que vous utilisez déjà Linux à votre insu. Quoi ? Oui vous monsieur ! Parfaitement madame ! Vous l’utilisez déjà et sans même le savoir. Vous possédez certainement un smartphone Androïd comme environ 44 % de la population française ? (Article sur Zdnet) Androïd est un système d’exploitation Linux remanié par les équipes de Google. (Hé oui !) Donc vous utilisez déjà Linux.

Voici quelques arguments qui devraient vous encourager à utiliser Linux:

  • Stabilité : Le serveur qui héberge ce blog n’a pas été redémarré depuis 498 jours. Il héberge de nombreux services de bases de données, d’accès distant et il exécute quotidiennement des dizaines de tâches planifiées comme des mises à jour ou encore des sauvegardes!
    • Linux doit sa stabilité à la simplicité de son architecture, mais également au savoir faire d’une armée de développeur travaillant pour la communauté.
  • Insensibilité aux virus : En effet, la plupart des virus sont développés pour Windows et même si quelques virus et autres logiciels malveillants existent aujourd’hui sur Linux, il est rare d’en attraper en navigant sur internet.
  • Gratuité : Cela va dépendre de la distribution que vous aurez choisi, mais sachez que même si vous optez pour une version payante du système, celle-ci vous coûtera toujours moins cher pour équiper votre parc que d’autres systèmes et d’autre part, vous bénéficierez sans aucun doute d’une excellent support technique qui vous assistera en cas de difficulté.
  • Documentation et support : Linux et chacun de ses élément est très bien documenté par une gigantesque communauté à l’échelle mondiale et dans toutes les langues. D’autre part, il existe des tonnes de sites techniques et de forums qui sont là pour vous porter assistance en cas de pépin ou d’incertitude.

Je ne vous ai pas convaincu ? Comme je vous comprends… Ce n’est jamais simple de remettre en cause ses habitudes, de quitter notre confort pour se lancer dans l’inconnu. Hé bien, j’ai justement pensé à vous et je vais vous proposer dans cet article des solutions pour vous permettre d’utiliser Linux sans prendre de risque, sans réinstaller tout votre ordinateur, sans rien casser. Impossible ? Non !

Utiliser Linux dans Windows avec Cygwin

Il s’agit en fait d’une bibliothèque de commandes, d’utilitaires et services propres à Linux et qui ont été portés sur Windows. Ils ont été réécris et recompilés pour fonctionner comme des exécutable Windows. En somme, Cygwin étend les capacités de votre Windows et vous permettra d’utiliser un panel important de commandes et services qui sont normalement réservés aux possesseurs de système Linux.

Le tout s’installe comme un logiciel que vous pourrez désinstaller à tout moment et ceci sans nuire au bon fonctionnement de votre PC. Vous pourrez lancer Cygwin chaque fois que vous en aurez besoin et l’éteindre à votre guise sans gêner le fonctionnement habituel de votre système Windows.

Attention! Cygwin est réservé à un public d’utilisateurs expérimentés. Ne vous attendez pas à vous retrouver avec un bel installeur pour vous guider et faire le travail pour vous ni à obtenir un bureau aussi classe que sur Ubuntu. Je l’ai particulièrement utilisé en milieu professionnel pour exécuter des batchs (scripts de commandes) UNIX sur des systèmes Windows mais également pour faire fonctionner des services de console à distance comme SSH ou de synchronisation comme RSYNC et plus occasionnellement pour compiler du code en C sur des systèmes Windows. Il s’est toujours avéré très utile et stable.

Cygwin est développé par l’équipe responsable de la distribution Red Hat Linux (http://www.redhat.com/). Une des plus anciennes distributions que je connaisse avec Debian.

Cygwin est disponible à l’adresse suivante : https://cygwin.com/

Cygwin s'installe comme un logiciel classique
Cygwin une fois lancé. Une invite de commande dans un terminal sur fond noir. La classe!

Utiliser un live-CD ou USB Ubuntu, Knoppix

Autrefois un live CD ou DVD permettait de démarrer un système d’exploitation au lancement de votre ordinateur. Aujourd’hui cette technologie existe toujours, mais il est plus intéressant d’utiliser une solution live USB qui fonctionne comme son nom l’indique à partir d’une clé ou d’un disque dur USB. La différence se fera sentir au niveau de la rapidité et de la capacité à écrire des données et une configuration utilisateur sur un support USB.

Aujourd’hui les deux distributions les plus complètes et les plus réputées au niveau des live CD sont Ubuntu et Knoppix (ces deux systèmes sont basés sur la distribution debian), mais il en existe pleins d’autres. Je vous invite à chercher Linux Live CD sur google, vous allez en avoir pour votre argent 🙂

Ces distributions sous forme de Live CD ou USB vous permettront d’exploiter Linux, ses bureaux et outils graphiques ou lignes de commandes comme si vous l’aviez installé sur votre ordinateur. Vous pouvez l’utiliser ainsi autant de fois que vous le souhaitez, c’est l’occasion de découvrir ce système petit à petit sans prendre de risque jusqu’au jour où vous franchirez le pas et l’installerez sur votre PC. Sauf si vous n’aimez pas et que vous ne souhaitez plus l’utiliser du tout.

Le live CD Ubuntu est orienté utilisateur et propose un bureau très agréable avec de nombreux logiciels de bureautique, retouche d’image et une bonne palette de commande.

Démarrage sur un live CD de Ubuntu. Choix de la langue.
Démarrage sur un live CD de Ubuntu. On vous propose de l'essayer sans l'installer.

 

Le live CD de Knoppix est orienté technique et maintenance. Il est équipé de logiciels pour partitionner, sauvegarder ou récupérer des données et comporte de nombreux logiciels et une bibliothèque de commandes impressionnantes.

écran de démarrage de Knoppix
knoppix3

 

Utiliser Linux au travers d’une émulation de PC : VirtualBox

Virtualbox est un logiciel libre sous licence GPL qui propose d’émuler (simuler) logiciellement le fonctionnement d’un ordinateur. L’intérêt de ce type de logiciel réside dans sa capacité à faire fonctionner des systèmes d’exploitation (Windows, Mac OS, Android, Linux et autres) dans une sorte de cocon qui peut être complètement fermé pour l’isoler de votre système et réseau existant ou au contraire le relier à votre réseau et système existant pour tester son comportement.

Il existe d’autres solutions libres moins facile à utiliser comme Qemu et des solutions commerciales comme VMWare.

Les solutions de virtualisation comme VirtualBox évitent d’acheter et d’utiliser une machine physique dédiée pour vos tests, mais vous propose également de bénéficier d’une architecture virtuelle incluant des réseaux et si vous avez beaucoup de mémoire, disque et CPU plusieurs machines virtuelles. Vous pouvez ainsi monter des maquettes avec des systèmes virtuels ou enregistrer des actions sur un système d’exploitation pour faire de la documentation ou des tutoriels. Les exploitations sont nombreuses. Je m’en suis également déjà servi pour transférer des logiciels vieillissants et fonctionnant avec MS-DOS sur des ordinateurs modernes permettant ainsi d’augmenter la longévité de certaines applications au delà de celle des machines qui supportaient ces logiciels (ex: 386 ou 486).

Ainsi en utilisant VirtualBox vous pouvez vous entraîner à installer n’importe quelle distribution Linux, mais également n’importe quel autre système d’exploitation qu’il soit Windows ou Mac OS sans prendre aucun risque, sans détériorer ou modifier le fonctionnement de votre ordinateur.

Dans le cas de figure qui nous intéresse, vous allez pouvoir utiliser Linux dans votre système Windows, sans changer brusquement vos habitudes et sans risquer d’endommager votre PC. Le top quoi ! Cette solution réclame toutefois d’avoir un ordinateur assez puissant avec assez de mémoire et d’espace disque, car si on parle bien de machine virtuelle, les données ne le sont pas et il faut des supports physiques pour les stocker et les traiter.

Fenêtre de gestion des machines virtuelles sur VirtualBox
Un bureau Ubuntu dans une machine virtuelle
Un bureau Ubuntu dans une machine virtuelle
Bureau Ubuntu

Liens et références

Voici une petite liste de liens en rapport avec l’article traité. Vous trouverez matière à vous renseigner sur les distributions Linux soulevées dans cet article, mais aussi certains logiciels.

Crédits

Image logo tux (pingouin) : http://fr.wikipedia.org/wiki/Tux

Une ligne téléphonique pour 1.20 € TTC par mois

Même si ce titre racoleur vous semble trop beau pour être honnête, je vous invite à la lecture de ces quelques lignes ci-dessous qui pourraient bien vous donner matière à réfléchir et à faire des économies dans un avenir proche.

Petit rappel

Dans un article précédent (Visite guidée de la téléphonie) nous avions traité de la téléphonie dans son ensemble et vu les différent mode de téléphonie qui se présentent aujourd’hui à l’homme moderne, économe et pressé que nous sommes.

Depuis 2013, j’utilise une ligne téléphonique VoIP qui me coûte 1.20 € par mois et j’en suis satisfait. Je vais vous expliquer pourquoi et vous montrer toutes les possibilité offertes par cette technologie.

Pour ce prix à quoi ai-je le droit ?

Un numéro géographique (01 02 03 04 05) ou un numéro débutant par 09

Étant de la région lyonnaise, j’ai choisi d’avoir un numéro de téléphone commençant par 04, mais j’aurai tout aussi bien pu choisir un numéro débutant par 01 ou 09. Avoir un numéro géographique dans la région où on travaille rassure les gens. Avoir un numéro en 01 donne l’impression qu’on se trouve à l’autre bout du pays et la proximité de ses prestataires rassure. Un numéro en 09 donne l’impression qu’on appelle avec sa box personnelle et ne donne pas d’information sur la position géographique de son propriétaire.

Un numéro surtaxé en 08 pour quelques euros de plus

Vous apportez de la valeur ajouté à travers les appels que vous recevez, faîtes payer les appelants.

Des appels illimités vers les fixes de France et de 40 pays

Alors oui, mais l’illimité, le vrai, n’existe pas et voici les conditions écrites en petites ligne en bas de l’offre chez OVH.

Inclus vers 99 numéros différents par ligne et par mois, au-delà les appels sont facturés à la seconde

Dans la limite de 60 minutes de communication par appel, au-delà le temps de communication supplémentaire est facturé à la seconde

Ça veut dire que je peux téléphoner de manière illimité à condition que je ne dépasse pas 60 minutes de communication par appel. Je propose donc à mes contacts de raccrocher et de les rappeler au delà de 50 minutes d’appel lorsque c’est moi qui téléphone. Cela remet le compteur à zéro et ainsi, mon appel n’est pas facturé. EASY !

D’autre part, je suis encore loin d’appeler 99 numéros différents par mois. Je ne suis pas un centre d’appel. Bon, l’offre de base ne prend pas en compte les appels vers les téléphones mobiles, mais pour quelques euros de plus, il est possible de passer à l’offre supérieur et d’inclure les mobiles en illimité à raison de 80 numéros par mois.

La portabilité de mon numéro

Vous possédez déjà un numéro de téléphone que vous utilisez et vous ne souhaitez pas en changer ? La portabilité est là pour vous. Vous pouvez faire la demande auprès de l’opérateur SIP pour que votre numéro bien aimé soit désormais utilisable chez lui. Prévoyez tout de même un délai de 7 à 10 jours pour que la bascule soit effective.

Pas d’engagement

Si le service ne correspond plus à vos attentes ou que vous n’avez plus d’utilité pour cette ligne téléphonique, rien n’est plus simple. Vous pouvez demander en ligne la résiliation de votre ligne auprès de l’opérateur. Prévoyez tout de même que votre ligne ne sera pas résiliée avant la date de votre prochaine facturation (environ 1 mois).

Une messagerie vocale en or!

J’adore ce type de messagerie vocal !

Il est possible de la personnaliser et d’enregistrer ses propres messages de répondeur et de les envoyer via un fichier MP3 ce qui permet au préalable de faire un vrai montage avec une ambiance musical en arrière plan. Bref un truc de pros réservé normalement aux grandes sociétés.

Vous pouvez également mettre un message de pré-annonce dans le cas par exemple d’un incident connu que vous êtes déjà en train de traiter. Ça permet d’informer vos contacts d’une situation et de leur montrer que vous êtes sur le coup.

Les messages laissés peuvent vous être envoyé au format mp3 par mail sur la ou les boites que vous aurez spécifié. C’est vraiment la cerise sur le gâteau, parce que ça vous permet d’une part de conserver les messages que les gens vous laisser pour les archiver ou les traiter plus tard. Mais en prime, vous pouvez en cas d’absence mettre en copie des personnes qui pourront traiter ce message à votre place ou prévenir votre contact que sa demande est prise en compte.

Le renvoi d’appel conditionnel (plusieurs options)

Simple mais efficace, le renvoi d’appel est là pour vous aider. Renvoi sur indisponibilité vers Répondeur

Si vous ne pouvez pas répondre, votre correspondant est automatiquement envoyé sur votre répondeur, un classique, mais qui permet toutefois à votre contact de laisser ses coordonnées.

Renvoi sur indisponibilité vers un autre numéro

Si vous ne pouvez pas répondre, l’appel est automatiquement envoyé vers un autre numéro (comme un standard par exemple) qui pourra répondre à votre correspondant.

Renvoi après x secondes vers Répondeur

Vous êtes occupés et vous n’avez pas décroché votre téléphone au delà de x secondes, l’appel sera automatiquement renvoyé vers votre répondeur.Renvoi après x secondes vers un autre numéro

Vous êtes occupés et vous n’avez pas décroché votre téléphone au delà de x secondes, l’appel sera automatiquement redirigé vers un autre numéro comme celui d’un standard téléphonique ou celui d’un de vos collaborateur pour qu’il traite l’appel à votre place.

Renvoi si la ligne est occupée vers Répondeur

Vous êtes déjà en ligne et vous ne pouvez pas traiter l’appel. Votre correspondant sera redirigé vers votre répondeur et vous pourrez le recontacter ultérieurement.Renvoi si la ligne est occupée vers un autre numéro

Vous êtes déjà en ligne et vous ne pouvez pas traiter l’appel. Votre correspondant sera automatiquement redirigé vers un autre numéro comme celui d’un standard téléphonique ou celui d’un de vos collaborateur pour qu’il traite l’appel à votre place.

Renvoi systématique de tous les appel vers Répondeur

Vous êtes en congés, la société est fermée, faîtes le savoir à vos correspondants et laissez leur des informations utiles sur votre répondeur (horaires d’ouverture, absent jusqu’à…)

Renvoi systématique de tous les appel vers un autre numéro

Ce numéro sert de relai vers un helpdesk, un standard ou autre et tous les correspondants seront envoyés systématiquement vers le numéro spécifié qui traitera les appels.

La présentation du numéro

La présentation du numéro est un standard de la téléphonie moderne. Cela vous permet de voir qui vous appelle en affichant son numéro. Votre téléphone enregistrera dans son historique la date, l’heure et le numéro ayant appelé, ce qui vous permettra de recontacter la personne même si elle n’a pas laissé de message.

Appeler en numéro masqué

Vous ne souhaitez pas être reconnu ou que votre correspondant puisse vous rappeler, téléphonez en masquant votre numéro de manière systématique ou pour un appel seulement.

Utilisations

Conditions

Avoir un accès à internet que ce soit en filaire ou en wifi, il est indispensable d’avoir une connexion de bonne qualité à internet pour pouvoir téléphoner ou recevoir des appels.

Toutefois, certains opérateurs permettent l’utilisation de votre ligne SIP depuis un téléphone fixe ou mobile en téléphonant sur un numéro spécifique.

Matériel

Rassurez vous, si vous aimez pouvoir toucher votre téléphone, sachez que vous pouvez utiliser votre ligne SIP peut être utilisée depuis des téléphones physique (téléphone IP) qui ressembleront comme deux gouttes d’eau aux téléphone que vous avez toujours utilisé.

Personnellement j’utilise un IP phone de chez Cisco pour mon bureau et j’en suis content. Il a plein de fonctionnalités sympathiques et la qualité des appels est irréprochable.

Voici quelques exemples de ce vous pouvez trouver sur le site Amazon.fr, mais il y a également d’autres vendeurs…

Téléphones IP physiques

Depuis les smartphones (Iphone ou à base d’Android)

Aujourd’hui les téléphones mobiles modernes permettent d’utiliser nativement ou avec un logiciel additionnel votre ligne téléphone SIP.

Depuis votre tablette (Iphone ou à base d’Android)

Votre tablette étant presque un téléphone, il est possible également de l’utiliser pour téléphoner et recevoir des appels avec votre ligne SIP.

Depuis votre ordinateur portable ou fixe (avec un micro casque) avec un logiciel spécifique

Votre ordinateur portable est votre meilleur ami ? Vous ne faîte presque rien sans lui, voici l’occasion de lui donner une utilité supplémentaire. En plus d’être votre bureau pendant les heures de travail, votre plate forme de jeux ou multimédia lorsqu’il s’agit de vous détendre, il peut désormais devenir votre téléphone avec l’aide de logiciels spécifiques appelés soft phone.

Logiciels de VoIP utilisables

Voici quelques logiciels qui vous permettront d’utiliser votre ligne téléphonique SIP. Personnellement, j’utilise la version gratuite de Zoiper et j’en suis très content. La qualité est au rendez-vous.

Deux opérateurs réputés en France

A présent, voici deux opérateurs qui sont vraiment au top sur les lignes téléphoniques SIP en France. J’étais initialement client chez IPPI, mais ayant énormément de services en location chez OVH, j’ai préféré tout centraliser chez eux et je suis donc à présent client de leur offre SIP et sans aucun regret. D’ailleurs, je n’ai plus de téléphone fixe autre que ma ligne SIP depuis plus de 6 mois et tout va très bien. Le bon côté, c’est que mon téléphone fixe me suis de partout dans le monde. Dès que j’ai internet, je peux téléphoner et recevoir des appels.

  • (environ 6 € TTC par mois) – IPPI : IPPI
  • (environ 1.20 € TTC par mois) OVH : OVH

Les structures de contrôle – partie 3

Dans cette troisième partie consacrée aux structures de contrôle nous allons étudier certains types de boucles particulièrement adaptées aux tableaux (for, foreach), la structure de contrôle switch qui permet d’écrire des ensembles de conditions plus simplement qu’avec la structure if.

Les boucles for

La boucle for permet de faire plusieurs choses. Premièrement, elle permet d’attribuer une valeur de départ à une variable. Ensuite elle applique une condition, par exemple tant que la variable initialisée est inférieur à une valeur maximale fixée. Et enfin elle permet de réaliser une action, par exemple l’incrémentation (valeur+1) ou la décrémentation (valeur-1) de la variable.

Voici à quoi cela ressemble d’un point de vue logique

POUR (POSITION=VALEUR ; TANT QUE POSITION INFÉRIEUR A VALEUR MAX ; ACTION SUR POSITION) {
	// Instructions à exécuter
	// A chaque passage dans la boucle, POSITION aura une valeur différente selon que l'on choisisse
	// de l'incrémenter ou décrémenter
	// Pour sortir prématurément d'une boucle
	break ;
}

Dans nos exemples ci-dessous, nous utiliserons la variable position que nous allons initialiser à 0 pour traiter les 8 valeurs contenues dans nos tableaux. Ainsi la valeur maximale de la variable position sera 7 (de 0 à 7, nous avons bien 8 valeurs).

Les tableaux de données utilisés seront les suivants :

0Marie
1Marc
2Antoine
3Jean
4Eric
5Simone
6Pierre
7Martine
0Lyon
1Grenoble
2Paris
3Beauvais
4Bordeaux
5Valence
6Nantes
7Auxerre

Création d’une boucle for en C

#define <stdio.h>
#define <stdlib.h>
 
int main(void) {
        /* Définition des variables */
        int position;
        int max=8;
        /* Définition du tableau personnes */
        char personnes[8][16]={
                "Marie", "Marc", "Antoine", "Jean", "Eric", "Simone",
                "Pierre", "Martine"
        };
        /* Définition du tableau villes */
        char villes[8][16]={
                "Lyon", "Grenoble", "Paris", "Beauvais", "Bordeaux",
                "Valence", "Nantes", "Auxerre"
        };
 
        /* Traitement des tableaux avec une boucle for */
        for (position=0; position < max; position++) {
                printf("%s travaille à %s\n", personnes[position], villes[position]);
        }
        return EXIT_SUCCESS;
}

Une fois compilé et exécuté, le code ci-dessus affichera ceci :Marie travaille à Lyon
Marc travaille à Grenoble
Antoine travaille à Paris
Jean travaille à Beauvais
Eric travaille à Bordeaux
Simone travaille à Valence
Pierre travaille à Nantes
Martine travaille à Auxerre

Nous constatons que à la valeur 0 du tableau personnes on trouve « Marie », dans le tableau villes à la même position nous trouvons « Lyon », le résultat avec position à 0 affiche donc « Marie travaille à Lyon ». Et on recommence ce même cycle jusqu’à 7 qui correspond à la dernière valeur des deux tableaux.

En Javascript à présent

var personnes=[ 'Marie', 'Marc', 'Antoine', 'Jean', 'Eric', 'Simone', 'Pierre', 'Martine' ] ;
var villes=[ 'Lyon', 'Grenoble', 'Paris', 'Beauvais', 'Bordeaux', 'Valence', 'Nantes', 'Auxerre' ] ;
var pos ;
// Nombres d'éléments dans le tableau personnes
max=personnes.length ;
// Parcours du tableau avec la boucle for
for (pos=0 ; pos < max ; pos++) {
  console.log(personnes[pos] + ' travaille à ' + villes[pos]) ;
}

Le code ci-dessus affichera :Marie travaille à Lyon
Marc travaille à Grenoble
Antoine travaille à Paris
Jean travaille à Beauvais
Eric travaille à Bordeaux
Simone travaille à Valence
Pierre travaille à Nantes
Martine travaille à Auxerre

En PHP

<?php
$personnes=array('Marie', 'Marc', 'Antoine', 'Jean', 'Eric', 'Simone', 'Pierre', 'Martine') ;
$villes=array('Lyon', 'Grenoble', 'Paris', 'Beauvais', 'Bordeaux', 'Valence', 'Nantes', 'Auxerre') ;
// Nombre d'éléments dans le tableau personnes
$max=count($personnes) ;
// Parcours du tableau avec la boucle for
for ($pos=0 ; $pos < $max ; $pos++) {
  echo $personnes[$pos]." travaille à ".$villes[$pos]."<br/>" ;
}
 
// Méthode alternative pour parcourir un tableau en PHP
$pos=0 ;
// A chaque passage, $prenom contiendra le nom de l'élément du tableau puis passera au suivant à la fin de la boucle
foreach ($personnes AS $prenom) {
  echo $prenom." travaille à ".$villes[$pos]
  $pos++ ;
}

De la même manière le code ci-dessus affichera :Marie travaille à Lyon
Marc travaille à Grenoble
Antoine travaille à Paris
Jean travaille à Beauvais
Eric travaille à Bordeaux
Simone travaille à Valence
Pierre travaille à Nantes
Martine travaille à Auxerre

En Perl

#!/usr/bin/perl
 
use strict;
 
# Définition des tableaux
my @personnes=('Marie', 'Marc', 'Antoine', 'Jean', 'Eric', 'Simone', 'Pierre', 'Martine');
my @villes=('Lyon', 'Grenoble', 'Paris', 'Beauvais', 'Bordeaux', 'Valence', 'Nantes', 'Auxerre');
 
my $pos;
 
# Parcours des tableaux
for ($pos=0; $pos < scalar(@personnes); $pos++) {
        print $personnes[$pos]." travaille à ".$villes[$pos]."\n";
}
 
# Méthode alternative pour un tableau en Perl
$pos=0;
foreach (@personnes) {
        print $_." travaille à ".$villes[$pos]."\n";
        $pos++;
}

Le code ci-dessus affichera :Marie travaille à Lyon
Marc travaille à Grenoble
Antoine travaille à Paris
Jean travaille à Beauvais
Eric travaille à Bordeaux
Simone travaille à Valence
Pierre travaille à Nantes
Martine travaille à Auxerre

En anglais, switch signifie commutateur et c’est exactement le rôle de cette structure de contrôle. Elle permet d’exécuter des instructions dans des cas bien spécifiques que ce soit pour un ou plusieurs cas de figures différents, mais elle offre également la possibilité de définir des instructions à exécuter pour tous les cas de figure non traités.

Voici la représentation logique de cette structure

SWITCH ($valeur) {
	CAS '1' :
		// Instructions à exécuter lorsque $valeur est égal à 1
		// Sortie de la structure
		BREAK
	CAS '2' :
	CAS '3' :
	CAS '5' :
		// Instructions à exécuter lorsque $valeur est égal à 2, 3 ou 5
		// Sortie de la structure
		BREAK
	CAS '6' :
		// Instructions à exécuter si $valeur est égal à 6
		// On ne sort pas de la structure, donc on traite aussi le cas de figure suivant
	CASE '9' :
		// Instructions à exécuter si $valeur est égal à 6 ou 9
		// Sortie de la structure
		BREAK
	DEFAULT :
		// Instructions à exécuter pour tous les cas de figure qui n'ont pas été traités précédemment
}

Ce type de structure complexe peut être réalisée entièrement avec des structures de contrôle if else if et else, mais elle sera alors moins évidente à écrire et à lire. La structure switch est une facilité visuelle pour les développeurs dans le sens où elle permet de traiter de multiples cas de figures dans une seule structure et de manière assez évidente.

Voici un exemple en C

#define <stdio.h>
#define <stdlib.h>
 
#define PERSIL 0 
#define SALADE 1
#define TOMATE 2
#define CAROTTE 3
#define POIVRON 4
 
/* Définition de la fonction de traitement */
void couleur(int legume) {
  switch (legume) {
      case PERSIL :
      case SALADE :
        printf("Couleur : verte\n") ;
        break ;
      case TOMATE :
      case POIVRON :
        printf("Couleur : rouge\n") ;
        break ;
      default :
        printf("Cas de figure non traité\n") ;
    }
  }
}
 
int main(void) {
  couleur(PERSIL) ; /* Affichera : Couleur : verte */
  couleur(POIVRON) ; /* Affichera : Couleur : rouge */
  couleur(CAROTTE) ; /* Affichera : Cas de figure non traité */
 
}

La même structure en Javascript

// Définition de la fonction
function couleur(legume) {
  var ret ;
 
  switch (legume) {
    case 'persil' :
    case 'salade' :
      ret='vert' ;
      break ;
    case 'tomate' :
    case 'poivron' :
      ret='rouge' ;
      break ;
    default :
      ret='Cas de figure non traité' ;
  }
  // Retourne le résultat à la fonction appelante
  return ret ;
}
 
// Utilisation de la fonction
console.log(couleur('persil')) ;  // Affichera : vert
console.log(couleur('poivron')) ;  // Affichera : rouge
console.log(couleur('banane')) ;  // Affichera : Cas de figure non traité

En PHP

<?php
// Définition de la fonction
function couleur($legume) {
  $ret='' ;
  switch ($legume) {
    case 'salade' :
    case 'persil' :
      $ret='vert' ;
      break ;
    case 'tomate' :
    case 'poivron' :
      $ret='rouge' ;
      break ;
    default :
      $ret='Cas de figure non traité' ;
  }
}
 
// Utilisation de la fonction
echo "Le persil c'est : ".couleur('persil') ;  // Affichera : Le persil c'est : vert
echo "La tomate c'est : ".couleur('tomate') ;  // Affichera : La tomate c'est : rouge
echo "La banane c'est : ".couleur('banane') ;  // Affichera : La banane c'est : Cas de figure non traité

En perl

En Perl les choses changent un peu. En effet, la structure de contrôle switch n’existe pas nativement en Perl et si on souhaite malgré tout pouvoir traiter des conditions de la même manière, il faut faire appel à un module spécifique qui devra être chargé au démarrage du script. Ce module se nomme ‘Switch.pm’.

#!/usr/bin/perl
 
use strict;
# Chargement du module Switch.pm
use Switch;
 
# Définition de la fonction
sub couleur {
        my ($legume)=@_;
        my $ret;
 
        # Utilisation de la structure émulée
        switch ($legume) {
                # Syntaxe pour exécuter les mêmes instructions
                # pour 2 cas de figures différents
                case ['salade', 'persil'] {
                        $ret='vert';
                }
                # Syntaxe pour exécuter les mêmes instructions
                # pour 2 cas de figures différents
                case ['tomate', 'poivron'] {
                        $ret='rouge';
                }
                # Équivalent du mot clé default pour traiter tous les cas de figure qui n'ont pas été 
                # traité par les instructions au dessus
                else {
                        $ret='Cas de figure non traité';
                }
        }
        return $ret;
}
 
print "Une salade c'est: ".couleur('salade')."\n";  # Affichera : Une salade c'est : vert
print "Un poivron c'est: ".couleur('poivron')."\n";  # Affichera : Un poivron c'est : rouge
print "Une banane c'est: ".couleur('banane')."\n";  # Affichera : Une banane c'est : Cas de figure non traité

Voilà, c’est la fin de cette série d’articles consacrés au bases de la programmation. Après avoir lu et appréhendé ces différents articles (qui je le répète ne sont pas exhaustifs), vous ne serez certainement pas des développeurs de pointe, mais vous aurez suffisamment d’éléments pour commencer à apprendre ou renoncer si cela ne vous parle pas du tout.

Si vous souhaitez des compléments d’informations ou voir un sujet particulier être traité à la suite de ces articles, vous pouvez en faire la demande par mail ou via les commentaires.

Les structures de contrôle – Opérateur conditionnel ternaire

En complément des articles sur les bases de la programmation, voici une structure de contrôle particulière qui mérite qu’on s’y attarde et qui permet en quelque sorte d’attribuer un contenu conditionnel aux variable. Il s’agit de l’opérateur conditionnel ternaire. (Ternary operator in english)

Voici ce que cela donne d’un point de vue logique

ma_variable=(condition) ? Valeur si condition vrai:Valeur si condition fausse ;

Cela revient à écrire la structure suivante :
Si (condition est vrai) {
	ma_variable= valeur si condition vrai
}
Sinon {
	ma_variable= valeur si condition fausse
}
// La même en version courte
SI (condition) { ma_variable=valeur } SINON { ma_variable=valeur }

L’intérêt est double… Cela permet de gagner en lisibilité car le code de départ tient souvent en une seule ligne alors qu’une structure de contrôle if peut prendre souvent plus de place et demande de réécrire certaines portions de code plusieurs fois. Cela permet également de gagner quelques octets dans les scripts et programmes interprétés. Sur ces milliers de lignes et des millions de boucles, cela peut faire une différence conséquente.

Voici comment cet opérateur s’utilise en C

#define <stdio.h>
#define <stdlib.h>
 
int main(void) {
  int a=5 ;
  /* Si a est supérieur à 4, alors la valeur de b sera 6, sinon ce sera 2 */
  /* Dans le cas présent la valeur de b sera 6 */
  int b=(a > 4) ? 6:2 ;
}

En Javascript

var a=5 ;
var b=(a > 4) ? 'Attention !' :'Tout va bien' ;
console.log(b + ' Valeur = ' + a) ;  // Affichera : Attention ! Valeur = 5
 

En PHP

<?php
$a=4;
b=($a > 4) ? 'Alerte !' :'Ok';
 
echo "$b Valeur = $a";  // Affichera : Ok Valeur = 4

En Perl

#!/usr/bin/perl
 
use strict;
 
my $a=5;
my $b=($a > 4) ? 'Alerte!':'Ok';
 
print $b." Valeur: $a\n";  # Affichera : Alerte! Valeur: 5

Les structures de contrôle – partie 2

Une fonction c’est quoi?

Les fonctions sont des conteneurs logique de code. Il s’agit d’une structure de contrôle dont vous pouvez définir le contenu et les conditions et qui peut retourner (en fonction du langage et de vos souhaits) une valeur, un tableau, des objets, un booléen ou seulement exécuter une action sans rien retourner.

Les fonctions sont faites pour ne pas avoir à réécrire les même portions de code pour traiter les 250 000 cas de figure de votre base client. Un ensemble d’instructions peut ainsi être écrit une seule fois et réutilisé des millions de fois pour traiter par exemple les données d’un tableau ce qui fait gagner un temps précieux pour le développeur et des milliers de ligne de code.

Les fonctions sont très simples à définir et à utiliser, voici un petit schéma logique

// Définition
FONCTION nom_fonction(paramètre_1, paramètre_2, paramètre_x) {
	// Instructions à exécuter et éventuellement valeur à retourner
}

// Utilisation
RESULTAT_1=nom_fonction(val1, val2, valx) ;
RESULTAT_2=nom_fonction(val12, val22, valx2) ;
RESULTAT_Y=nom_fonction(val1y, val2y, valxy) ;

Voici comment définir et utiliser une fonction en C

#define <stdio.h>
#define <stdlib.h>
 
/* En C les paramètres d'une fonction se définissent avec leur type comme les variables */
int voyelles(char *mot) {
  int res=0 ;
  int pos=0 ;
 
  /* Tant que la fin de la chaînes de caractères n'a pas été atteinte */
  while (mot[pos]!='\0') {
    // On parcoure chaque lettre du mot et à chaque voyelle on ajoute 1 à la valeur de res
    if (mot[pos]=='a' || mot[pos]=='e' || mot[pos]=='i' || mot[pos]=='o' || mot[pos]=='u' || mot[pos]=='y') {
      res++ ;
    }
    pos++;
  }
  // Retourne la valeur de res à la fonction appelante
  return res;
}
 
int main(void) {
  printf("azerty contient %d voyelle(s)\n", voyelles("azerty")) ;
   /* Affiche : azerty contient 3 voyelle(s) */
  printf("pierre contient%d voyelle(s)\n", voyelles("pierre")) ;
   /* Affiche : pierre contient 3 voyelle(s) */
  printf("toto contient%d voyelle(s)\n", voyelles("toto")) ;
   /* Affiche : toto contient 2 voyelle(s) */
 
  return EXIT_SUCCESS ;
}
 

en Javascript

// Définition de la fonction
// Retourne le chiffre entré en toutes lettres de 0 à 10 ;-)
function enToutesLettres(nombre) {
  // On teste la valeur du paramètre pour voir si il est dans la plage fixée
  if (nombre > 10 || nombre < 0) { return "Traite seulement les chiffres de 0 à 10 !" ; }
  if (nombre==0) { return "zéro" ; }
  if (nombre==1) { return "un" ; }
  if (nombre==2) { return "deux" ; }
  if (nombre==3) { return "trois" ; }
  if (nombre==4) { return "quatre" ; }
  if (nombre==5) { return "cinq" ; }
  if (nombre==6) { return "six" ; }
  if (nombre==7) { return "sept" ; }
  if (nombre==8) { return "huit" ; }
  if (nombre==9) { return "neuf" ; }
  if (nombre==10) { return "dix" ; }
  // On ne devrait jamais arriver ici
  return   "Il y a un problème !" ;
}
 
// Utilisation de la fonction
console.log(enToutesLettres(3)) ; // Affichera trois
console.log(enToutesLettres(6)) ; // Affichera six
console.log(enToutesLettres(9)) ; // Affichera neuf

En PHP

<?php
// Définition de la fonction
// Crée retourne une histoire avec les noms passés en paramètres
function histoire($nomPrince, $superPouvoir, $nomPrincesse, $nomSorciere) {
  $prepa='Il était une fois il y a bien longtemps, une princesse nommée '.$nomPrincesse.' fut enlevée par '.
  'la sorcière '.$nomSociere.'. Mais heureusement, arriva le prince '.$nomPrince.' qui grâce à '.
  'son super pouvoir, '.$superPouvoir.', terrassa la princesse '.$nomPrincesse.' et épousa la sorcière '.
  $nomSorciere.'. Oups !!!' ;
 
  return $prepa ;
}
 
echo "Voici ce qui arrive quand on veut aller trop vite et qu'on ne fait pas attention:<br/>".
histoire('Kevin', 'la sieste', 'Cent-Vingt Drillons', 'Bien-Aimée')."<br/>";

Le code ci-dessus affichera (et l’histoire changera à chaque fois qu’un paramètre sera modifié) :

Voici ce qui arrive quand on veut aller trop vite et qu’on ne fait pas attention:
Il était une fois il y a bien longtemps, une princesse nommée Cent-Vingt Drillons fut enlevée par la sorcière Bien-Aimée. Mais heureusement arriva le prince Kevin qui grâce à son super pouvoir, la sieste, terrassa la princesse Cent-Vingt Drillons, et épousa la sorcière Bien-Aimée. Oups !!!

Ca n’a aucun sens bien entendu, c’était seulement pour l’exemple…

Et enfin en Perl

#!/usr/bin/perl
 
use strict;
 
sub concatenation {
        my ($motA, $motB, $lien)=@_;
        my $resu;
 
        $resu = $motA.$lien.$motB;
 
        return $resu;
}
# Appel de la fonction
print "Résultat: ".concatenation("Jean", "Pierre", "-")."\n";
 

Le code ci-dessus affichera :

Résultat: Jean-Pierre

Site web responsive

Site web responsive

Les gens me demandent souvent ce qu’est un site responsive, à quoi cela sert, si il n’est pas préférable de faire l’acquisition d’une version mobile ou tablette ou si une application mobile ne sera pas plus efficace. Ce n’est pas facile de donner une réponse succincte car en vérité cela va dépendre de certains paramètres comme les attentes du client par rapport à son site web, mais également son budget et la clientèle ciblée.

Qu’est ce que responsive veut dire?

Un site web responsive signifie que la disposition du contenu va s’adapter à la taille de votre écran (mobiles, tablettes, petits écrans) afin d’optimiser la lecture. Il peut être confortable de naviguer sur un site lorsque vous avez un ordinateur de bureau avec un énorme écran. Cette expérience change radicalement lorsque vous vous retrouvez sur des écrans bien plus petit lorsque vous êtes en déplacement par exemple.

Voici quelques petits schémas pour illustrer mes propos :

Un site web affiché sur un écran de bureau moderne
avec une bannière, des éléments de menu,
des images et des articles

Schéma de site web sur écran de PC

Le même site affiché sur un écran de téléphone mobile beaucoup plus petit

Schéma site web non responsive

Dans l’exemple ci-dessus, nous perdons clairement en lisibilité. En effet pour naviguer sur le site, il est nécessaire de zoomer sur l’écran tactile puis de se déplacer pour lire et viser le bouton ou le lien sur lequel vous souhaitez cliquer ce qui demande une certaine gymnastique et est au final peu pratique. Imaginez maintenant ce que cela peut donner sur un site beaucoup plus complexe…

A présent le même site web, mais construit de manière responsive

Schéma site web responsive

Cette fois ci, ce n’est pas au visiteur de zoomer et de se déplacer pour arriver à lire, mais bel et bien le site qui s’adapte à ce petit écran pour rester lisible et garder un confort de navigation. Ainsi les éléments d’un site responsive peuvent être redimensionnés, placés autrement et même parfois supprimés pour que l’ensemble soit accessible et lisible depuis l’écran d’un téléphone mobile ou d’une tablette. Le contenu du site reste scrupuleusement le même, seule la mise en page change pour s’adapter.

Quelle est la différence avec une version mobile?

Une version mobile (ou tablette) signifie que le site web est complètement réécris et adapté pour les écrans de téléphone mobile (ou tablette) seulement. Sur un écran de bureau, un site mobile apparaîtra comme mal proportionné et inadapté.

Une version mobile a un coût, en effet, cela demande la réécriture complète du site web, soit le contenu mais aussi la mise en page (HTML/CSS) avec ce que cela peut sous-entendre comme problèmes de maintenance, mise à jour et redondance liées directement à cette réécriture. Cela signifie que chaque mise à jour du site web devra être répercutée sur la version mobile de ce même site. Cela peut vite coûter beaucoup de temps et d’argent.

Qu’est ce qu’une application mobile?

Une application mobile c’est un logiciel qui a été développé dans un langage propre au système d’exploitation du mobile ou de la tablette. L’avantage de ce développement c’est que le logiciel est parfaitement adapté et très performant sur votre appareil. De plus, l’application étant locale à votre téléphone ou tablette, elle ne nécessite pas forcément une connexion à internet pour fonctionner grâce aux stockage de bases de données sur votre téléphone.

Le revers de la médaille c’est que pour une même application, il sera nécessaire de créer autant de programme qu’il existe de systèmes. Par exemple, il faudra créer une application dans le langage objective C pour qu’elle fonctionne sur les téléphones de la gamme Apple (IOS), mais également une autre application en Java pour les smartphone fonctionnant avec le système Android, il faudrait également penser aux Windows Phone et donc créer une application en C# (C Sharp).

Vous l’aurez compris, une application mobile sera très performante et offrira plus de possibilités qu’un site web, mais demandera des compétences de programmation dans de nombreux langages (autant qu’il y a de systèmes mobiles) et, si vous devez sous-traiter ces développements, cela pourra vous coûter cher.

Qu’est ce qu’on peut en conclure?

Les sites web en HTML5/CSS3 sont à privilégier autant que possible car même si ils offrent moins de possibilités qu’une application, ils ont le mérite d’être compatibles avec tous les téléphones et tablettes moderne du marché et restent abordables. D’autre part, des technologies de stockage des données dans des bases locales à votre appareil existent et permettent à une web application de fonctionner et traiter des données en local sans forcément avoir accès à internet. Ces technologies s’appellent : Web SQL, Indexed DB ou encore Local Storage.

Mais bien entendu, le choix se fera naturellement en fonction de vos besoins, vos moyens et vos clients.

Liens et références

Les structures de contrôle – partie 1

Introduction

Les structures de contrôle permettent comme leur nom l’indique de contrôler des conditions durant l’exécution de votre code. Cela peut varier de la valeur d’une variable en passant par le retour d’une fonction. Les structures de contrôle permettent également de traiter les éléments d’un tableau ou des listes de valeurs déterminées (par exemple : de 0 à 31).

Sans ces structures logiques, la programmation serait un véritable enfer où le choix des portion de code à exécuter reviendrai à la décision d’un humain et où il faudrait réécrire x fois la même portion de code pour traiter les x valeurs d’un tableau.

Dans les structures de contrôle et pour les langages que nous allons étudier, la condition à tester est un booléen, soit une valeur comprise entre 0 (FAUX) et 1 (VRAI). Une condition sera toujours déclenchée par un état VRAI. Si on souhaite faire le contraire, c’est à dire déclencher lorsque la vérification est fausse, il faut faire précéder son expression par un point d’exclamation !. Enfin, les conditions doivent être entourées par des parenthèses.

Les opérateurs de contrôle

Voici une liste non exhaustive des principaux symboles utilisés pour tester des conditions.

OpérateurSignification
==égal
!=différent
>strictement supérieur
<strictement inférieur
>=supérieur ou égal
<=inférieur ou égal

Voici quelques exemples de conditions et leur retour booléen:

  • (12==13) FAUX
  • (13==13) VRAI
  • (12==(12+1)) FAUX
  • (12==(13-1)) VRAI
  • (13 > 12) VRAI
  • (12 < 13) VRAI
  • (12 > 13) FAUX
  • (13 >= 13) VRAI
  • (12!=13) VRAI

SI ou SINON et SINON-SI

La première structure de contrôle et aussi la plus simple consiste à vérifier une condition et à exécuter des instructions en fonction qu’elle soit vrai ou fausse. Il est également possible de tester plusieurs conditions dans une structure SI avec SINON-SI.

Voici comment se présente cette structure

SI (CONDITION VRAI)
	ALORS
	// Instructions à exécuter si la condition est vrai
SINON
	// Instructions à exécuter si la condition est fausse

Simple n’est-ce pas? Si la condition est vrai, on exécute les instructions définies en haut, sinon les autres. On peut même ne pas spécifier d’instruction pour SINON si ce n’est pas utile.

Pour illustrer l’exemple ci-dessous avec une valeur

SI (12 < 13)
	ALORS
	AFFICHER '12 est inférieur à 13'

Ici pas de sinon, 12 sera toujours inférieur à 13 et ce n’est pas la crise ni les attaques terroristes qui pourront y changer quelque chose…

Voici comment s’utilise cette structure en C

#define <stdio.h>
#define <stdlib.h>
 
int main(void) {
  int a=13;
  int b=12;
 
  /* SI */
  if (a > b) {
    printf("La valeur de a est supérieure à la valeur de b\n") ;
  }
  /* SINON */
  else {
    printf("La valeur de a est inférieure à la valeur de b\n") ;
  }
  /* Affichera :  La valeur de a est supérieure à la valeur de b */
 
  a=12 ; b=13 :
  /* SI */
  if (a > b) {
    printf("La valeur de a est supérieure à la valeur de b\n") ;
  }
  /* SINON */
  else {
    printf("La valeur de a est inférieure à la valeur de b\n") ;
  }
  /* Affichera :  La valeur de a est inférieure à la valeur de b */
}

en Perl à présent

# !/usr/bin/perl
 
use strict ;
 
my $a=13 ;
my $b=12 ;
 
# SI
if ($a > $b) {
  # Instructions
  print "La valeur de a est supérieure à la valeur de b\n" ;
}
# SINON
else {
  # Instructions
  print "La valeur de a est inférieure à la valeur de b\n" ;
}
# Affichera :  La valeur de a est supérieure à la valeur de b
 
$a=12 ; $b=13 ;
# SI
if ($a > $b) {
  # Instructions
  print "La valeur de a est supérieure à la valeur de b\n" ;
}
# SINON
else {
  # Instructions
  print "La valeur de a est inférieure à la valeur de b\n" ;
}
# Affichera :  La valeur de a est inférieure à la valeur de b

Au tour de PHP

<?php
 
$a=13 ; $b=12 ;
// SI
if ($a > $b) {
  // Instructions
  echo "La valeur de a est supérieure à la valeur de b<br/>" ;
}
// SINON
else {
  // Instructions
  echo "La valeur de a est inférieure à la valeur de b<br/>" ;
}
// Affichera :  La valeur de a est supérieure à la valeur de b
 
$a=12 ; $b=13 ;
// SI
if ($a > $b) {
  // Instructions
  echo "La valeur de a est supérieure à la valeur de b<br/>" ;
}
// SINON
else {
  // Instructions
  echo "La valeur de a est inférieure à la valeur de b<br/>" ;
}
// Affichera :  La valeur de a est inférieure à la valeur de b
?>

Et finalement en Javascript

var a=13 ;
var b=12 ;
 
// SI
if (a > b) {
  // Instructions
  console.log('La valeur de a est supérieure à la valeur de b') ;
}
// SINON
else {
  // Instructions
  console.log('La valeur de a est supérieure à la valeur de b') ;
}
// Affichera :  La valeur de a est supérieure à la valeur de b
 
a=12 ; b=13 ;
// SI
if (a > b) {
  // Instructions
  console.log('La valeur de a est supérieure à la valeur de b') ;
}
// SINON
else {
  // Instructions
  console.log('La valeur de a est supérieure à la valeur de b') ;
}
// Affichera :  La valeur de a est inférieure à la valeur de b

La structure de contrôle SI-SINON existe dans la majorité des langages de programmation et est indispensable pour prendre des décisions dans un programme. On ne peut s’en passer et vous verrez par la suite que ceraines structures de contrôles plus complexes reposent sur celle-ci.

TANT QUE

Cette structure de contrôle fait partie des boucles. Parce que, tant que la condition est vrai, nous allons exécuter les mêmes instructions. Attention toutefois à réaliser les bons contrôles pour sortir de la boucle sans quoi votre programme peut boucler à l’infini (jusqu’à interruption manuelle).

Elle se présente comme suit

TANT-QUE (CONDITION VRAI) {
	// Instructions à exécuter à chaque passage dans la boucle
}

Voici ce que ça donne en C

#define <stdio.h>
#define <stdlib.h>
 
int main(void) {
  int position=12 ;
  int max=24 ;
 
  /* Tant que position est inférieur à max */
  while (position < max) {
    /* Instructions à exécuter tant que position est inférieur à max */
    printf("Valeur de position : %d\n", position) ; /* Affiche la valeur de position */
    position++ /* On augmente position de 1 à chaque passage */
  }
  /* La boucle affichera les valeurs de 12 à 23 puisque 24 étant == à max on sort de la boucle avant de l'afficher */
}

En perl

# !/usr/bin/perl
 
use strict ;
 
my $pos=12 ;
my $max=24 ;
 
# Tant que pos est inférieur à max
while ($pos <= $max) {
  # Affiche la valeur de pos à chaque passage
  print "Valeur de pos : $pos\n" ;
  # Incrémente la valeur de pos à chaque passage (ajoute 1)
  $pos++ ;
}
# La boucle affichera les valeurs de 12 à 24 puisque nous avons utilisé l'opérateur <= (inférieur ou égal)

En PHP

<?php
$pos=12 ; $max=24 ;
// Tant que pos est inférieur à max
while ($pos < $max) {
  // Affiche la valeur de pos à chaque passage
  echo "Valeur de pos : $pos<br/>" ;
  // Incrémente la valeur de pos à chaque passage (ajoute 1)
  $pos++ ;
}
/* La boucle affichera les valeurs de 12 à 23 puisque 24 étant == à max on sort de la boucle avant de l'afficher */
?>
 

En Javascript

var pos=12 ;
var max=24 ;
 
while (pos <= max) {
  // Affiche la valeur de pos à chaque passage (dans la console)
  console.log('Valeur de pos : ' + pos) ;
  // Incrémente la valeur de pos à chaque passage (ajoute 1)
  $pos++ ;
}
/* La boucle affichera les valeurs de 12 à 24 puisque nous avons utilisé l'opérateur <= (inférieur ou égal) */
 

Dans les articles à venir nous allons étudier d’autres structures de contrôle plus complexes ou plus spécifiques à certains langages. Ces structures sont là pour faciliter le travail du développeur, aider à prendre des décision dans un programme mais aussi à parcourir des tableaux de donnée ou encore à traiter des ensembles de cas de figures spécifiques.