Tester Ubuntu sans rien modifier sur votre ordinateur.

Etape n°1 de la découverte d’Ubuntu: Je teste sans prendre de risques :) .

  1. Rendez vous sur la page de téléchargement d’Ubuntu:
  2. Cliquez un peu plus bas sur “télécharger maintenant”
  3. Éventuellement vérifiez l’intégrité du fichier que vous venez de télécharger.
  4. Utilisez un graveur de CD pour graver l’image iso.
  5. Laisser le CD dans l’ordi
  6. Si le CD se lance sous Windows et affiche un menu, ignorez le pour l’instant, et fermez la fenêtre.

Note: Je détaille énormément la procédure dans mon article  pécédent: Graver une image iso. Donc si vous êtes perdu, n’hésitez pas à y jeter un oeuil ;) .

7. rebooter le PC
8. Au démarrage appuyer sur F12 et choisir de booter sur le CD.


commentaire: Ceci va charger une session Ubuntu dans la mémoire RAM de l’ordinateur sans rien modifier sur le disque dur. Vous allez donc pouvoir essayer Ubuntu sans contrainte, vu que si ça ne vous plait pas, vous avez juste à rebooter le PC et à enlever le CD, et votre ordinateur sera comme avant.

Quelques petites indications tout de même:

  • le menu démarrez est en haut à gauche.
  • la poubelle est en bas à droite.
  • Pour arrêter l’ordinateur il faut cliquer en haut à droite.
  • Ne cliquez pas encore sur Installer sauf si vous êtes sûrs de vous, et que vous savez ce que vous faites.

Voila pour le test sans risque. L’étape suivante est libre et dépend de votre motivation. Si vous ne voulez pas partitionner votre disque dur, vous pouvez tenter l’installation comme si Ubuntu était un simple programme Windows avec Wubi. Sinon, selon votre degré de compétence ou de motivation(car ce n’est pas bien compliqué si on se donne un peu de mal pour comprendre), vous pourrez tester l’installation en mode automatique ou l’installation en mode manuel. J’en reparlerai peut être en détail dans un prochain article.

Graver une image iso

Bon alors dans la catégorie chose qui parait totalement évidente pour quiconque a un minimum de connaissances en informatique, voici comment graver une image iso. J’avoue je ne pensais pas faire un article la dessus, mais comme quelqu’un m’a demandé beaucoup de précisions dessus aujourd’hui, je vais tacher d’être aussi complet que possible. Prenons un cas pratique: imaginons par exemple que vous vouliez télécharger et graver le dernier CD d’Ubuntu.

  1. Tout d’abord rendez vous sur la page de téléchargement.
  2. Normalement vous n’avez rien à remplir, les sélections par défaut conviennent à la majeure partie des utilisateurs.
  3. Donc descendez vers le bas de la page, et cliquez sur télécharger maintenant.
  4. Une fenêtre s’ouvre pour vous demandez ce que vous souhaitez faire du fichier
  5. Choisissez “enregistrer le fichier” et mettez le quelque part dans votre ordinateur. Par défaut sous Windows, c’est souvent le bureau qui est choisi automatiquement.
  6. Etape facultative: Il arrive parfois que des morceaux de fichiers se perdent pendant le téléchargement. Certains sites proposent des clés MD5 pour vérifier l’intégrité des fichiers. En gros un algorithme mouline les octets du fichier et calcule une signature unique propre à ce fichier. Il vous suffit alors de comparer votre signature à celle qui est mise en ligne pour vérifier l’intégrité de vos données. Dans le cadre d’Ubuntu, c’est très bien expliqué sur cette page.

Bon donc normalement vous avez maintenant un fichier dont le nom se termine en .iso stocké quelque part dans l’ordinateur. Ne double cliquez pas dessus, ne cherchez pas à l’ouvrir avec un gestionnaire d’archive, ou autre, non laissez le en paix et ouvrez votre logiciel de gravure favori.

  1. Ne choisissez pas l’option “créer un cd de données”, mais cherchez plutôt l’option “graver une image iso” ou encore “graver une image de disque” comme indiquez sur l’illustration en tête d’article. Attention dans certains logiciels, il faut fouiller un peu, par exemple l’option est souvent dans un sous menu de l’option “copier un disque”.
  2. Le logiciel vous demande où se trouve l’image à graver
  3. cliquez sur le bouton parcourir, et aller chercher votre fichier iso que vous aviez téléchargé, à l’endroit où vous l’aviez enregistrer.
  4. Si l’option “multissessions” est activé, désactivez là, et choisissez les options “copie en une fois” ou équivalent, et “cloturer le disque après la gravure”.
  5. attention:  il est possible qu’à la fin de la gravure, le logiciel de gravure éjecte le CD automatiquement… Et que pour voir comment est votre CD, vous le réinsériiez dans l’ordinateur. Dans ce cas, s’il s’agit du CD d’Ubuntu, quelque chose va se lancer automatiquement, car il est possible d’installer Ubuntu depuis Windows pour le tester sans toucher aux partitions. Je vous conseille de ne rien lancer dans l’immédiat, et de d’abord tester en live comme je l’expliquerai bientôt dans un autre article dédié à l’installation dUbuntu.

Ubuntu, une alternative grand public pour les déçus de Windows

J’avais déjà commencé à l’introduire dans mon précédent article sur Linux, Ubuntu est donc un dérivé de Linux tourné vers le grand public, et pensé pour les utilisateurs qui viennent du monde de windows et veulent découvrir Linux. Il fut un temps  où Linux était réservé aux professionnels. L’installation relevait du parcours du combattant, et six mois d’investissement au moins étaient nécessaires à une bonne prise en main du système. Avec Ubuntu qui existe depuis maintenant 4 ans, ce temps est révolu.

Tout d’abord Ubuntu (et de nombreuses autres distributions maintenant) est disponible sur liveCD. Le principe est simple: au démarrage l’ordinateur va charger Ubuntu depuis le CD dans sa mémoire RAM sans rien modifier du disque dur. Il est donc possible de tester sans installer. Au redémarrage, on enlève le CD, et le PC redémarre comme s’il ne s’était rien passé.

Ensuite, Ubuntu dispose d’un mode d’installation graphique tout à fait intuitif. Sur un ordinateur de base resté dans sa configuration d’usine, quasiment tout est automatique.

Enfin de nombreuses interfaces graphiques viennent simplifier la vie de l’utilisateur. Pour plus d’information sur les avantages et inconvénients d’Ubuntu, consulter cette page de la documentation francophone d’Ubuntu.

Et pour conclure quelques liens utiles:

Voila pour l’introduction à Ubuntu. Dans de prochains articles, je donnerai sans doute des procédures d’installation détaillées, cependant il y a déjà de nombreux sites plutôt fouillés sur la manière de faire. Regardez dans la documentation, c’est pas de la documentation Windows qui sert à rien, non c’est une documentation écrite par des bénévoles, et c’est tès bien fait, une vraie mine d’or!

Linux, vous connaissez?

Trop de bloggers à mon goût tiennent un langage qui échappe totalement à l’humain normal, et moi même, je ne suis pas hors de tout reproche. Alors comme Linux est un thème que j’ai à coeur et sur lequel je vais revenir souvent, je vais commencer par rappeler ce que c’est pour tous ceux qui sont moins habitués au monde du libre. Alors il faut savoir que Linux est un terme qui peut être utilisé pour désigner deux choses:

  • Dans l’utilisation originale du terme, c’est pour désigner un noyau sur lequel de nombreux systèmes d’exploitation libre sont basés. Vous êtes bien avancés avec ça :) . Bon c’est un peu compliqué, mais en gros un noyau, c’est la couche minimale de programmes qui permettent à l’ordinateur de fonctionner, et sur laquelle viennent se greffer tout un tas de logiciels qui vous permettent au final d’avoir une jolie interface graphique et la possibilité de profiter des possibilités d’un ordinateur sans avoir la moindre idée de comment ça fonctionne. Pour plus d’informations à ce sujet, voir l’excellent article de wikipedia.
  • Dans le sens ou je vais l’utiliser le plus souvent, il s’agit du sens courant qui en est dérivé pour parler des systèmes d’exploitation qui en sont dérivés. Vous comprendrez mieux après quelques explications:

Linux, qu’est-ce que c’est?

1) Le système d’exploitation :

Avant d’expliquer ce qu’est linux, il convient peut être de parler des OS. OS est le sigle de Operating System, soit en français : système d’exploitation. Un système d’exploitation est un grand programme fondamental qui fait l’interface entre l’utilisateur et la machine. Le plus célèbre de tous est Windows, on peut aussi citer Mac et bien sûr Linux. Il en existe d’autres, mais ce sont les principaux. On pourrait faire une définition plus précise, mais en gros votre sytème d’exploitation reconnait l’ensemble des éléments qui constituent votre système et les paramètre de manière à ce qu’ils fonctionne ensemble et que vous puissiez les utiliser. Par ailleurs certains fournissent une agréable interface graphique qui permet à n’importe quel utilisateur néophyte de les prendre en main en un minimum de temps.

2) Les distributions :

Une distribution d’un sytème d’exploitation est un environnement basé sur ce système d’exploitation qui a été adapté aux besoins spécifiques de certains utilisateurs. A ce jour on compte les distribution de Linux par centaines, c’est pourquoi le nouvel utilisateur pourra facilement être perdu parmis tous ces choix. Une petite lecture de l’article de Wikipédia sur Linux pourra alors s’avérer fort utile. Ensuite il peut exister différentes versions d’une même distribution. Il s’agit en général de datation de la distribution, étant donné que chaque distribution évolue avec le temps, et que l’on est donc amené à mettre à jour sa distribution vers une version plus récente.

3) Linux, à quoi ça sert?

On pourra se questionner sur l’utilité de Linux puisque Windows existe. En fait Linux a été développé en partie pour palier aux trops grandes insuffisances de ce dernier. Tout le monde connait les problèmes dus au fait que Microsoft essaye d’imposer à toute force son hégémonie, en incluant ses logiciels dans ses distributions. Il y a aussi des problèmes de compatibilité liés au fait que les sources des programmes sont secrètes, et tout un tas de problèmes de copyright. Enfin Windows pèche par son instabilité légendaire et par ses innombrables failles de sécurité. A l’opposé, Linux est un sytème stable est sûr sur lequel il n’est pas possible d’attrapper un virus à moins de le faire exprès, ses sources sont libres, et tous y ont accès, enfin il est totalement gratuit. Il y a quelques années encore, on pouvait lui reprocher son manque de compatibilité avec les applications Windows grand public, et la nécessité de s’y connaitre un minimum pour savoir l’installer et l’utiliser. Mais aujourd’hui, ce n’est plus vrai, car un effort particulier a été mené en ce sens, par le biais de la conception de logiciels alternatif, voire de logiciels qui tels wine permettent d’utiliser sous Linux certains programmes Windows. Par ailleurs l’installation de base a été automatisée, et une agréable interface graphique qui n’a rien a envier à Windows a été ajoutée, ce qui rend aujourd’hui l’installation de Linux plus simple que celle de Windows, et c’est encore plus vrai pour certaines distributions orientées grand public, comme par exemple Ubuntu dont je reparlerai très prochainement.

Les pointeurs en C

Après les deux articles précédents, la compréhension de ce qu’est un pointeur devrait être plus facile. En effet, qu’avons nous vu? Un ordinateur comprend un microprocesseur, de la mémoire et des cartes d’entrée/sorties. Lorsque l’on effectue une opération, il va chercher les informations dans la mémoire, il les traite et les restocke dans la mémoire. Ceci implique qu’il sache s’y retrouver dans la mémoire. En gros on peut dire que ce qui se passe revient à ceci : tous les octets de la mémoire sont numérotés. Chacun de ces numéros est appelé l’adresse de l’octet. Les adresses sont stockées sur 32 bits, soit sur 8 chiffres en hexadécimal. Chaque case mémoire a donc une adresse propre, et le microprocesseur a sous la main un fichier dans lequel sont indiquées les adresses de toutes les variables qu’il a besoin de manipuler. Par ailleurs le microprocesseur à sous le coude un autre fichier qui contient toutes les instructions qu’il doit exécuter. Encore une fois je précise que ce n’est pas tout à fait ça. Mais du point de vue du programmeur C qui découvre les pointeurs, ça suffira.

a) Les adresses :

Donc lorsque l’on déclare une nouvelle valeur, par exemple un tableau T de 15 entiers, le microprocesseur sait que la mémoire requise va être 15x “le nombre d’octets nécessaire pour le stockage d’un entier”. Soit 60 octets si on est sur un ordinateur où chaque int est stocké sur 4 octets. Le microprocesseur va donc reserver quelque part dans la mémoire (où il veut, c’est son problème du moment que la place est libre) 60 octets consécutifs. Puis il va noter quelques part que ces octets ne sont plus libres, et il va noter dans son fichier de variables l’adrese du premier octet du tableau. Vous avez peut être déjà essayé de faire printf(“%d”,T); T étant un tableau, et obtenu un curieux résultat du style 0×8ab45fe5, eh bien c’est précisément ça : vous avez affiché l’adresse du premier octet du tableau T. De même si vous tapez printf(“%d”,&a); dans un programme, a étant un entier quelconque, vous allez afficher l’adresse du premier des octets dans lesquels a est stocké. Et quand vous écrivez scanf(“%d”,&a); vous demandez au microprocesseur de stocker la valeur saisie au clavier à l’adresse de a, tout simplement. Attention tout de même, car si dans le cadre du tableau, vous tapez printf(“%d”,T+1); vous n’allez pas obtenir 0×8ab45fe6, adresse du deuxième octet sur lequel est stocké le premier entier de T, mais plutôt 0×8ab45fea9 correspondant au premier octet sur lequel est stocké l’entier suivant. En effet le compilateur sachant que T est un tableau d’entiers sait qu’il faut sauter 4 octets pour se placer sur l’entier suivant. C’est pour ça que &T[i] et (T+i) reviennent au même, tous deux désignant l’adresse du ième entier de T. A partir de maintenant nous allons donc pouvoir distinguer deux types de variables : celles qui contiennent des données et celles qui contiennent des adresses. Vous l’aurez deviné, les variables qui contiennent des adresses sont appelées des pointeurs. En effet depuis la case mémoire où elles sont stockées, elles pointent vers les cases mémoires dont elles contiennent l’adresse.

b) Les pointeurs :

Bon maintenant qu’ils ont si bien été introduits, il ne reste plus grand chose à dire sinon peut être qu’ils sont l’essence du C. Jusqu’à maintenant on ne vous en avait pas parlé car ce n’était pas nécéssaire, mais en fait ils sont omniprésents même si cela ne saute pas aux yeux. C’est notamment grâce aux pointeurs qu’une fonction peut modifier plusieurs variable : on lui passe en argument les adresses des cases mémoires qu’il va falloir lire et modifier, et elles peut ainsi modifier les variables même si elle ne retourne rien. Les pointeurs sont également très utiles dés lors que l’on veut utiliser des structures complexes, créer des listes, files, ensembles, graphes, etc, et optimiser la place mémoire requise. Un exemple typique est la liste linéaire chainée : chaque cellule contient l’adresse de la suivante. On se sert aussi de pointeurs pour tout ce qui est tableau : int *t; est typiquement la manière de déclarer un pointeur vers un ou des entiers. Et si on fait un tableau à deux dimensions, la déclaration devient int **t, qui se décompose en (int *) *t pour un pointeur vers des pointeurs vers des entiers. La structure typique est la suivante : dans la n-ièmecase du tableau de pointeurs est stocké le pointeur de la n-ième ligne du tableau.

Allocation Dynamique

Nous avons introduit le fonctionnement de base de l’ordinateur. Bien que l’allocation dynamique soit déjà un degré de complication au-dessus des premiers exercices, sa compréhension ne devrait pas poser de problèmes dés lors que le I est bien assimilé. Nous allons l’introduire au moyen de quelques exemples :

a) Allocation statique:

Supposons que l’on pose à un étudiant le sujet suivant : “Le programme doit demander à l’utilisateur de rentrer 5 nombres au clavier, les stocker dans un tableau, puis les afficher”. Un étudiant normal codera à peu près ceci :

int main(void)
{
int i;
int t[5];

./*PHASE DE SAISIE*/
puts(“entrez 5 entiers”);
for(i=0;i<5;i++)
scanf(“%d”,t+i);

.

/*PHASE D’AFFICHAGE*/
puts(“vous avez saisi : “);
for(i=0;i<5;i++)
printf(“%d, “,t[i]);

printf(“\n”);
}

.
.
/*declaration du compteur de boucle*/
/*declaration d’un tableau statique de 5 entiers*/
.
/*equivalent de printf(“entrez 5 entiers\n”)*/
/*initialisation de i à 0 puis avant chaque boucle, vérification que*/ /*i<5, puis exécution des instructions de la boucle, enfin*/
/*incrémentation de i.*/
/*boucle : saisie d’un nombre au clavier et stockage à l’adresse*/ t+i*/

.

/*le %d indique que l’on va afficher un entier. t[i] est la valeur*/
/*de la i ème*/
/*case du tableau (on compte à partir de zéro)*/
/*pour passer à la ligne en fin d’éxécution*/

Bon les commentaires sont là pour faciliter la compréhension de tous. Mais compte tenu de leur lourdeur et du fait que ce n’est pas une partie de plaisir de mettre des tabulations et autres procédés de mise en forme en html, c’est un luxe que je ne vais pas longtemps me permettre. Voyons tout de suite le problème suivant : “Le programme doit demander à l’utilisateur de choisir un nombre n puis de rentrer n entiers au clavier, de les stocker dans un tableau, puis de les afficher”.

La première solution qui vient à l’esprit du programmeur qui n’aime pas trop réfléchir et qui préfère extrapoler à partir de l’exemple d’avant consiste à rajouter au début du code précédent “int n; printf(“Donne n>”); scanf(“%d”,&n); ” puis de remplacer les 5 par des n, puis de se demander pendant une demi heure pourquoi le int t[n]; ne passe pas à la compilation (Si vous avez des doutes, relire le précédent article ne sera pas du luxe).

Il convient alors de se rappeller que nulle mémoire n’est infinie et que quelque soit le mécanisme qui va limiter la taille du tableau, il ne peut pas ne pas en exister un qui n’impose une limite (à moins peut être de travailler sous windows ;=) ), et ça peut très bien être vous. En allocation statique il n’existe pas vraiment de manière élégante de s’en tirer. Le plus simple est alors de supposer que l’utilisateur ne choisira pas un nombre plus grand qu’un maximum que vous fixez. Vous pouvez par exemple déclarer un tableau de 1024 entiers {int t[1024];} en supposant qu’aucun utilisateur ne sera jamais assez courageux pour choisir plus de 1000 nombres. Par contre ne faites que n boucles ;) Les puristes rajouteront un petit test pour afficher un message d’erreur dans le cas où le n choisi est supérieur à 1024. Voici un exemple de ce que vous pouvez faire :

int main(void)
{
int i,n;
int t[1024];

/*PHASE DE SAISIE*/
puts(“combien de nombres voulez vous rentrer?”);
scanf(“%d”,&n);

printf(“donnez %d nombres \n”,n);
for(i=0;i<n;i++)
scanf(“%d”,t+i);

/*PHASE D’AFFICHAGE*/
puts(“vous avez saisi : “);
for(i=0;i<n;i++)
printf(“%d, “,t[i]);
printf(“\n”);
}

b) Allocation Dynamique:

Le problème de la solution que l’on vient d’exposer est qu’elle est un peu bancale notamment au niveau de l’optimisation de l’espace mémoire, mais ce n’est que le problème le plus évident et il y en a d’autres. La solution est simple : il faut allouer soi même la mémoire dont on va avoir besoin en spécifiant la manière dont on va l’utiliser pour que le compilateur ne soit pas perdu. Pour cela on utilise des instructions spécifiques dont malloc et calloc. Je vais expliquer pour le calloc car c’est celui qui s’applique le mieux à notre exemple : pour réserver un tableau de n entiers on va écrire :

nt *t=(int*)calloc(n,sizeof(int));

et en voici la traduction :

  • ‘int *t’ =>on déclare un tableau d’entiers.
  • ‘calloc(n, sizeof(int))’ => on réserve pour ce tableau la place nécessitée par le stockage de n entiers sachant que sizeof(int) retourne le nombre d’octets utilisés pour stocker un entier. Il en découle pour le compilateur que le nombre d’octets à réserver est donc n*sizeof(int).
  • ‘(int*)’ est un cast c’est à dire un opérateur de conversion qui va indiquer au compilateur que l’espace que l’on va alouer va correspondre à un tableau d’entiers.

Pour les curieux, la petite étoile a un rapport avec quelque chose d’assez mystérieux appelé les pointeurs, nous y viendrons bien assez tôt. Et pour les malins qui ont repéré que sizeof(int) retournait 4 sur leur ordinateur et qui se contentent donc d’écrire “int *t=(int *)calloc(n,4);”, pensez que vous exécuterez peut être un jour votre programme sur un ordinateur qui utilise 8 octets pour stocker un int. Ce jour là vous aurez l’air malin (et ce d’autant plus que vous n’aurez pas de bug à la compilation, mais seulement à l’éxécution et encore pas systématiquement, un coup à s’arracher les cheveux). Bref voici donc comment traiter le problème précédent en utilisant l’allocation dynamique :

int main(void)
{
int i,n;
int *t;

/*PHASE DE SAISIE*/
puts(“combien de nombres voulez vous rentrer?”);
scanf(“%d”,&n);
t=(int *)calloc(n, sizeof(int));

printf(“donnez %d nombres \n”,n);
for(i=0;i<n;i++)
scanf(“%d”,t+i);

/*PHASE D’AFFICHAGE*/
puts(“vous avez saisi : “);
for(i=0;i<n;i++)
printf(“%d, “,t[i]);
printf(“\n”);
}

Il y a bien sûr encore pas mal de choses à dire sur les allocations dynamiques, la différence entre le calloc et le malloc, et l’instruction realloc, mais ce n’est pas l’objet de cette page qui veut avant tout faire comprendre le principe et l’esprit de la programmation C plutôt qu’un exposé rigoureux de ses fonctionnalités. Si vous avez un doute sur une instruction, pensez à ouvrir un terminal et à taper ‘man’ suivit du nom de l’instruction pour avoir des informations sur son mode d’utilisation.

Quelques prérequis à la compréhension du C

Alala les erreurs de segmentation, quelle plaie, n’est-ce pas? Heureusement nous n’allons pas commencer par là, même si nous y viendrons bien vite, alors ne nous pressons pas trop. Voyons pour l’instant les quelques prérequis de base: Nous allons tout d’abord évoquer rapidement le fonctionnement de base d’un ordinateur, avant d’évoquer la manière dont le C fonctionne. Enfin nous expliquerons en détail le fonctionnement de certaines commandes épineuses.

a) Fonctionnement de l’ordinateur:

Comme chacun le sait, les ordinateurs ne sont pas magiques, bien qu’on puisse en avoir un peu l’impression tellement les effets que l’on obtient actuellement sont extraordinaires. Et je crois qu’il est bon de le garder à l’esprit car trop souvent on est porté à les considérer comme des artefacts au pouvoir mystérieux.

Pour faire simple, un ordinateur marche grâce à un microprocesseur, de la mémoire, et un ensemble de composants permettant la communication avec l’environnement extérieur. Il y a deux types de mémoires : les mémoires de stockage, tels les disques dur, clés USB, et CDs, et les mémoires de travail aussi appelées mémoires RAM dans lesquelles sont chargées les données dont le microprocesseur a besoin pour travailler. Le microprocesseur est une puce qui contient des millions de transistors. Il effectue les calculs et traite les requêtes. Pour cela il va chercher les instructions dans la mémoire de travail, et y stocke les résultats qu’il obtient. Diverses cartes également bourrées de transistors interprètent ces résultats pour l’utilisateur. Les mémoires de stockages sont des éléments externes au microprocesseur. Chaque fois qu’il a besoin d’y lire ou d’y stocker des données, il est donc ralenti, c’est pourquoi on s’efforce généralement de limiter ces besoins en loadant une bonne fois pour toute les données requises dans la mémoire de travail.

b) Introdution au C

Ce n’est pas transparent pour l’utilisateur lambda, mais lorsque l’on demande à un ordinateur d’additionner deux entiers a et b, le microprocesseur doit connaitre l’endroit où se trouvent les entiers a et b, sur combien d’octets ils sont stockés et où il doit écrire le résultat. C’est pourquoi en C on déclare les variables que l’on va utiliser en spécifiant quel est leur type. Ainsi lors de la déclaration d’une variable (par exemple : “int var;” ) le microprocesseur réserve quelque part dans la mémoire de travail les octets nécessaire pour le stockage d’une variable de type int, il retient l’adresse de ces octets, et prend note que chaque fois que l’utilisateur utilise ou modifie la variable var, c’est à cet endroit là qu’il devra aller voir.

Mais en général on ne parle pas de microprocesseur directement mais de compilateur. C’est tout simplement parce que le microprocesseur ne sait parler qu’en binaire ou a la rigueur en hexadécimal, tandis que l’utilisateur programme dans un langage spécifique. Il est donc nécessaire d’utiliser un programme appelé compilateur qui va traduire tout ce que l’utilisateur a demandé pour que le microprocesseur puisse le comprendre. Il arrive malheureusement que l’utilisateur ait demandé quelque chose qui n’est pas logique, ou qui n’est pas compréhensible, et le compilateur est alors très malheureux car il ne sait pas quoi dire au microprocesseur. En général il réagit en demandant des précisions à l’utilisateur (il marque “erreur de quelque chose dans le fichier truc.c en ligne n”), mais parfois il fait à son idée, ce qui peut générer des erreurs assez cocasses à l’exécution.

c) Quelle différence entre int t[5]; et int t[n]; ?

Cet exemple va vous permettre de voir si vous avez bien tout compris. Le compilateur qui voit “int t[5];” est content. En effet il sait qu’il doit dire au microprocesseur de réserver la place nécessaire au stockage de 5 entiers. Par contre lorsque le compilateur voit “int t[n];”, il est tres malheureux. En effet il sait qu’il doit dire au microprocesseur de réserver la place nécessaire pour stocker des entiers, mais il ne sait pas combien. Donc il en fait part à l’utilisateur qui doit donc s’y prendre autrement lorsqu’il veut réserver un tableeau d’un nombre indéterminé d’entiers. C’est l’objet du prochain aticle.

Introduction au langage C

schéma de l'inclusion en C

Dans le cadre de mon dernier site, j’avais écrit quelques articles sur le langage C. Ces articles étaient très orientés débutants. Je vais donc dans le cadre du transfert de mon ancien site vers celui ci les poster dans mes prochaines publications. Ces articles sont avant tout destiné aux gens qui prendraient des cours de langage C, mais seraient un peu largués. Ainsi on s’attendra à ce que le lecteur connaisse certaines commandes de base du C. Par contre on s’attachera à réexpliquer le comment du pourquoi, et la raison pour laquelle le compilateur accepte certaines choses et pas d’autres. On fera également le lien entre ce qui se passe dans le programme et ce qui se passe au même moment au coeur de l’ordi de manière à mettre en évidence l lien entre les deux.

Voici le sommaire:

  1. Quelques prérequis à la compréhension du C.
  2. Allocation Dynamique.
  3. Les pointeurs.

Je n’ai bien sûr pas la prétention d’expliquer toute la philosophie du C en trois petits articles, mais je pense que leur contenu aurait pu être d’un grand secours à pas mal de mes condisciples moins habitués que moi à la programmation au moment où nous avons découvert les joies de la programmation en C :) .

En route vers le Web 2.0

Bonjour à tous ceux qui me lisent. J’ouvre aujourd’hui ce blog qui est destiné à me servir de site personnel pour remplacer mon site actuel qui se fait vieillot. Plusieurs raisons me poussent au changement:

- Les problèmes de serveurs: l’espace disque dont je dispose est très limité et j’ai eu de récents problèmes qui ont dénaturé tous les caractères accentués, un peu comme s’ils avaient été placés directement dans le code HTML.
- La disponibilité du serveur: le site actuel est hébergé sur le serveur de mon école d’ingénieurs, l’Ensicaen. Or je suis en dernière année, donc d’ici un an maximum je ne disposerai plus de cet espace. Alors je préfère faire une migration dès maintenant, afin que dans mes recherches d’emploi, ce soit toujours le même site que je donne en référence.
- Enfin l’envie de passer au Web 2.0 et à son mode communautaire. L’idée est déjà présente dans mon ancien site, puisque dans la partie hobbys, on peut déjà trouver quelques articles qui auraient très bien leur place sur un blog.

Mon intention est donc de créer un certain nombre de catégories d’articles dans lesquels je traiterais de sujets qui m’intéressent, en gros ça tournera pas mal autour de l’actualité, de l’informatique, de la musique, et de la programmation. La première chose que je ferais sera d’ailleurs sans doute de rapatrier ici les quelques articles de l’ancien site. Ensuite pour les publications futures, je ne compte pas m’astreindre de rythme particulier, je tacherai de ne pas laisser le blog trop longtemps, mais ça dépendra aussi de mes autres occuppations.

J’ai pas mal réfléchi avant de créer ce blog, et j’ai parcouru le web pour trouver l’hébergeur de blogs le plus adapté à ms besoins. Une des possibilités de WordPress qui m’intéresse est la possibilité (sauf erreur de ma part) de modifier le style css des pages, et de créer des pages perso au sein d’un site dont le blog serait une partie. Au niveau de la gestion de blog, je pense ne pas avoir trop de problème, en ayant déjà géré un pour relater mon stage technicien, alors je vais me concentrer sur ce dernier aspect. Voila pour mes objectifs à court terme. J’espère en apprendre suffisamment dans les prochains jours sur l’utilisation de WordPress pour avoir un site fonctionnel rapidement.

Ami visiteurs qui tombez ici par hasard, n’hésitez pas à commenter :)

Publié dans Le blog. Mots-clefs : , . Laisser un commentaire »