Présentation

Texte libre

Catégories

Lundi 27 novembre 2006

Le C est considéré par certains comme un super assembleur. Cette réputation vient du fait qu’en C tout doit être fait à la main. La libc implémente une partie des outils dont nous avons besoin. Cependant il est intéressant de les recoder de temps en temps. Aujourd’hui on va s’intéresser à un problème que tous les codeurs ont rencontrer au moins une fois, à savoir comment convertir une chaîne de caractère en entier sans utiliser les fonctions de la libc.


int string2int(const char *s)
{
    int res = 0;

     for (; *s; s++)
    {
       res *= 10;
       res += *s - '0';
    }
    return res;
}

En considérant que s est une chaine de caractères valide, elle se termine alors par le caratère
par Nabil Laadadra publié dans : Programmation
ajouter un commentaire commentaires (3)    créer un trackback recommander
Samedi 25 novembre 2006
CSMA/CD est un protocole réseau qui permet de faire communiquer plusieurs ordinateurs. La problématique est: comment faire communiquer plusieurs ordinateurs sur la même ligne en sachant qu'un seul ordinateur ne peut parler à la fois. Ramener à l'humain le problème devient: comment plusieurs personnes peuvent communiquer sans se couper la parole. La solution triviale est d'écouter chaque personne et dès que la parole est libre, on s'exprime. Si seulement c'était vrai chez les humains ...

Des dizaines d'ordinateurs sur une "voie" sans règles de prise de paroles entraîneraient des collisions à répétition, autant faire circuler des RER sur une seule voie. Le protocole est très simple chaque ordinateur qui a une donnée à transmettre écoute la ligne pour vérifier qu'aucun autre ordinateur n'est entrain d'émettre. Si elle est occupé l'ordinateur attend et tentera d'émettre plus tard (On reviendra après sur ce que veut dire plus tard). Si elle est libre, alors il émet les données et réécoute aussitôt la ligne pour vérifier que l'écho des données est bien le même. Si l'écho est le même, les données ont bien été transmis, si il est différent, alors un autre ordinateur à émis au même moment, il y a eu collision. Les données sont donc corrompu et les ordinateurs émettront plus tard. On peut très bien imaginer une personne entrain de parler et écouter l'écho de sa voix pour vérifier qu'elle n'a pas été coupée.

Le terme plus tard est assez vague, car si plus désignait une durée fixe (imaginons 1 seconde), cela voudrait dire que deux ordinateurs qui ont parlé en même temps attendraient tous les deux 1 seconde avant de ré émettre, et donc encore rentrer en collision. Par effet boule de neige, le réseau serait très vite saturé. La solution est de générer un temps d'attente aléatoire pour chaque machine en collision. En théorie, il y a toujours de rares cas ou ça ne marche pas, mais en pratique ça marche.

Moralité: pour que ça marche, prenez la parole quand personne ne parle.
par Nabil Laadadra publié dans : Tutorial - Cours
ajouter un commentaire commentaires (1)    créer un trackback recommander
Dimanche 12 novembre 2006


EPITA, école pour l'informatique et les techniques avancées.
C'est un école qui forme des ingénieurs informaticiens en 5 ans après le BAC. Le cursus est découpé en deux parties. Deux ans de prépas (INFOSUP et INFOSPE) et trois ans de cycle d'ingénieur (ING1, ING2 et ING3). Il est possible d'intégrer l'école après un BAC S sur dossier et concours, ou alors en admission parallèle (INFOSPE, ING1 et ING2), sur examen.
La spécificité de l'école est de nous former sur les principaux domaines de l'informatique d'aujourd'hui et de suivre les tendances du moment. D'autre part, EPITA est très orienté logiciel libre, chose de plus en plus apprécié dans le monde de l'entreprise.

INFOSUP:
La première année de l'EPITA. Tout fraîchement bachelier, l'ambiance EPITA n'a rien à voir avec le lycée. Le programme est carré, tout le monde apprend la même chose. Bref, en une année j'en ai appris plus qu'au lycée. Les matières enseignées sont: les maths, algorithmique, physique, électronique, architecture des ordinateurs (en SUP c'est plus de l'électronique numérique), micro informatique, anglais, culture générale. Tout au long de l'année les étudiants ont a réalisé par groupe de quatre un jeu en PASCAL sous Windows. Ce jeu choisit est libre, cependant un cahier des charges doit être rempli et validé par le responsable informatique de l'EPITA. Pour ma part, on a réalisé un jeu de plateforme à la Sonic, où les héros étaient les professeurs. On apprend énormément sur la programmation en général, sur les librairies graphiques (OPENGL, DIRECTX), sur la gestion des évènements claviers, souris, joystick, sur la gestion du son etc. Un bon projet de première année qui nous fait découvrir les joies de l'informatique pour le divertissement.

INFOSPE:
C'est la suite logique de la première année. Beaucoup de matières s'enchaînent sur l'année précédente. Les professeurs ne changent presque pas. La nouveauté est l'apprentissage du C/UNIX. Tout au long de l'année on apprend différents aspects de la programmation en C et des systèmes UNIX. Cependant la formation n'est pas aussi intensive qu'en ING1. Le projet à réaliser est un utilitaire, en C, sous plateforme UNIX, WINDOWS ou MAC. D'autres plateformes telles que PALMOS sont autorisés à condition de fournir le logiciel de communication avec un ordinateur. Globalement cette année sert à consolider nos acquis de SUP pour préparer au mieux l'entrée en cycle ingénieur.

ING1
L'ING1 commence par la traditionnelle piscine. La piscine est une période de quinze jours durant lesquelles une formation très intensive (quasi milliaire) est dispensée. On apprend à se servir du système d'exploitation NetBSD installé sur les machines de l'école, on apprend le shell script et le langage C. Les cours commencent à 14h et finissent à 19h. A partir de 21h un sujet noté, à rendre avant 6h du matin est distribué. Les étudiants restent toute la nuit à l'école faire le maximum. La notation est très stricte, le code fourni doit suivre une norme bien précise. Le manquement à une seule des règles entraîne un zéro à l'exercice. Toute tentative de contourner une règle est puni d'un -21 / 20 sur le sujet de la journée et -42 / 20 en cas de triche. Beaucoup d'étudiants cherchent avant tout à "limiter la casse". Au final cette période est une sorte de test envers soit même où l'on cherche ses limites et où on prend un rythme de travail. La suite de l'année jusqu'en décembre est une période appelé TC-11. Les cours commencent (Théorie des langages, algo, systèmes d'exploitations, assembleur). En plus des cours, toutes les semaines un projet est à rendre. Les projets sont fait de telle sorte à ne quasiment jamais pouvoir être fini dans la semaine. Peut importe, on en fait le maximum. C'est une moulinette qui note nos projets, et comme toutes machines ça passe ou ça casse. Les notes varient de l'excellentissime (25 / 20) au ridicule (- 42 / 20). Pendant cette période on enregistre le plus fort taux d'abandon, certains ne supportent plus de travailler jour et nuit pour avoir des notes tout juste au dessus de zéro, d'autres ne supportent plus le rythme de travail.
Par la suite (janvier à juillet), tous les projets se font pas groupes. Les méthodes de travail sont différentes, on apprend à avoir confiance dans le groupe. Les projets à fort cœfficient ont lieux durant cette partie de l'année. Base de donnée, programmation objet, génie logiciel, programmation réseau, etc... . Tous les aspects techniques de l'informatique sont passés au crible. Et comme le veut la tradition épitéenne, pour vérifier nos acquis un projet est généralement associé aux différentes matières.
Le plus gros projets de l'année est incontestablement TIGER. TIGER est un compilateur écrit en C++ pour langage TIGER. Ce projet mérite un billet à lui seul.

ING2:
L'ING2 débute par un stage. En Janvier on choisit notre spécialisation parmi les suivantes:
- Systèmes d'informations et génie logiciel
- Multimédia On line
- Télécom
- Génie informatique des systèmes temps réels
- Sciences cognitives et informatique avancé
- Systèmes, réseaux et sécurité

Je détaillerais dans un autre post les différentes spécialisations.

ING3:
C'est la suite logique de l'ING2. Les étudiants finissent les cours en décembre et partent en stage de fin d'étude, pour la plupart entrer dans le monde du travail.

par Nabil Laadadra publié dans : Mon parcours
ajouter un commentaire commentaires (2)    créer un trackback recommander
Mercredi 8 novembre 2006

Compter est la chose la plus simple que l'on puisse apprendre à l'école. On est tous passé par la, des jetons rouges et verts, puis on lance un dé. En fonction du nombre tiré par le dé, on récupère autant de jetons rouges. Arrivé à dix jetons rouges, on les échange contre un vert. Une autre manière de faire est de compter sur ses doigts. On tient ses poings fermés vers soit, puis on compte en ouvrant successivement ses doigts. Dès qu'ils sont tous ouvert on est donc arrivé à dix (et oui on n'est pas des tortus ninjas) et on referme tous les doigts et on continue.
L'homme a donc fixé une barrière à partir de laquelle on ajoute un chiffre puis on recommence. L'homme a fixé à dix ce chiffre, sans doute parque l'on à dix doigts. Maintenant, imaginons que les tortues ninjas (qui ont trois doigts par main, soit six doigts (elles n'ont que deux mains)) se mettent à compter, elles compteraient de la manière suivante: 0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 20, etc... Elles ne connaitraient ni le 7, ni le 8 et ni le 9, le sodoku serait d'ailleurs plus simple pour elles.
Un ordinateur est encore plus primitif, il ne compte qu'avec un seul doigt, soit il l'ouvre soit il le ferme. D'ou le terme binaire, ou encore l'algèbre de Boole, le vrai et le faux, le tout et le rien, le oui ou le non, le blanc et le noir, bref tout ce dont vous voudrez qui désigne deux états distincts.
Pourquoi deux états pour un ordinateur?  Pourquoi pas 10 états comme chez les humains?
En électronique il est facile de discriminer deux états en mesurant des tensions 0 ou 5 volts, +12 ou -12 volts, +5 ou -5 volts. D'autre part le passage d'un état à un autre sans ambigüité, or si on avait 10 états 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 volts le passage de 9 volts à 0 volt implique un passage par les voltages 8, 7, 6, 5, 4, 3, 2, 1, il est donc impossible de savoir à un moment donné ou en est l'ordinateur dans ses comptes.

Pour compter un ordinateur procède de la manière suivante. Supposons que l'ordinateur ne sache compter que sur 8 bits maximum (tout comme un enfant qui ne sait que compter jusqu'a 100). L'ordinateur réserve 8 cases dans lesquelles il pourra faire varier le potentiel électrique entre 0 ou 5 volts (les valeurs sont arbitraires). On représentera les cases à 0 volt par des 0 et les cases à 5 volts par des 1.

 

L’ordinateur codera un zéro de la manière suivante :

0000 0000

 

Un un :

0000 0001 (la dernière case à 5 volts)

 

Un deux :

0000 0010 (l’avant dernière case à 5 volts)

 

Un trois :

0000 0011 (les deux dernières cases à 5 volts)

 

On vient d’inventer le binaire manipulable sans problème par la machine. Le problème est comment le décoder rapidement ?

Voici une méthode :

On numérote chaque case avec en prenant le double du numéro de la case à sa droite. En sachant que la case la plus à droite est la case numéro 1.

On a le schéma suivant pour notre ordinateur:

 

128 64 32 16    8 4 2 1

    0   0   0   0    0 0 0 0

Pour avoir la valeur du code binaire on additionne tous les numéros de cases qui sont à 5 volts. Exemple :

0010 1010

 

On numérote les cases :

128 64 32 16   8 4 2 1

    0   0   1   0   1 0 1 0

 

Puis on additionne : 32 + 8 + 2 = 42. Donc 0010 1010 en binaire est en fait 42.

 

Pour passer du décimal au binaire, on cherche le numéro de case le plus grand mais que ne dépasse pas notre nombre. On met cette case à 5 volts et on soustrait au nombre le numéro de la case. On répète l’opération jusqu’à arriver à zéro. Exemple :

 

Convertissons 42 en binaire :

 

128 64 32 16    8 4 2 1

    0   0   0   0    0 0 0 0

 

32 est la plus grande case inférieur à 42, donc on passe 32 à 5 volts et on soustrait 32 de 42 donc 10 :

 

128 64 32 16    8 4 2 1

    0   0   1   0    0 0 0 0

 

On recommence avec 10. 8 est la bonne case, il reste 2

 

128 64 32 16    8 4 2 1

    0   0   1   0    1 0 0 0

 

Enfin 2 correspond à la case deux et la différence est égal à zéro, on a fini.

 

128 64 32 16    8 4 2 1

    0   0   1   0    1 0 1 0

 

L’ordinateur sait donc représenter les nombres par des potentiels électriques, mais comment fait-il les calculs entre les nombre binaires ?

Cette question sans doute traité en profondeur dans un autre article, mais brièvement on peut dire que le processeur est câblé pour manipuler une telle représentation des nombres. Il sait additionner, soustraire, multiplier, diviser, approcher des fonctions mathématiques grâce notamment aux développements limités et à la méthode de Héron.

 

Bref il sait compter mieux que nous et c’est pour cette raison qu’il a entièrement sa place en entreprise comme à la maison.

 

Moralité : si vous voulez avoir votre place à la maison et au boulot apprenez à compter (hein YJD ?)

par Nabil Laadadra publié dans : Tutorial - Cours
ajouter un commentaire commentaires (1)    créer un trackback recommander
Mercredi 8 novembre 2006
L'aventure du blog commence.
Aujourd'hui je blog est devenu incontournable dans le domaine professionnel. C'est pourquoi après avoir lu un article dans Challenges, je me suis "Et pourquoi moi aussi j'aurais pas mon petit coin d'internet".
Donc voila IT Nabil est sur les rails.
La ligne directrice de ce blog?
Présenter tout ce que je fais en informatique. Les projets que j'ai réalisé, les pannes d'ordinateurs que j'ai pu rencontrer, bref toutes les nouvelles choses que j'ai pu apprendre.
Dans un premier temps je vais m'attacher à présenter les projets réalisé lors de ma scolarité épitéenne, puis ensuite .... on vera.
par Nabil Laadadra publié dans : itnabil
ajouter un commentaire commentaires (1)    créer un trackback recommander

Calendrier

Août 2008
L M M J V S D
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
             
<< < > >>

Recherche

W3C

  • Feed RSS 2.0
  • Feed ATOM 1.0
  • Feed RSS 2.0
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus