8k-logo.jpg

A B C c' est la programmation

Je veux, depuis tres longtemps, programmer des jeux, en ce moment je travaille sur trois jeu en meme temps, deux m' appartiennent et le troisieme est le jeu d' un ami. Si vous etes un bon programmeur et que vous n' avez pas d' idee, contactez moi. Pour acceder au lien cliquez ici

 

Assembleur

Basic

le C

Anticipation

Sachant que:

Autrefois il existait deux sorte de language donnant deux sorte de programme: Les programmes compiler et les programmes interpreter. Les premiers fait grace a l' assembleur etait tres rapide( et le sont toujours) les seconds, les programmes en basic, etait plus lent car interpreter. C'est a dire que ces programmes etait "jouer" par un autre programme: L'interpreteur basic. Tandis que les programmes assembleur compiler une fois pour toute etait transformer en "Code Machine" c' est a dire en sequence directement assimilable par le microprocesseur. Eh bien maintenant c' est la meme chose en plus delicat... Presque tout les programmes sont interpreter en ce sens qu' il ne communique pas directement avec l' ordinateur mais au travers du systeme d' exploitation. Mais bien des petits genies ont reussi a programmer des logiciels qui utilisait au mieux les capacites et qui se passait allegrement du systeme d' exploitation. Grace a cela ces genies( dont je ne fait toujours pas parti )firent des merveilles de jeu mais surtout ils firent progresser l' informatique.Mais comment acquerrir ces connaissances secretes qui font penser au arcanes mystique et magique ? En un mot comment savoir comment marche"l' interieur" de la machine...Je ne le saurais jamais. Mais vous pouvez vous lancer (si vous etes jeune) dans l' aventure passionnante( et enrichissante) de la microelectronique.Mais ceci est une autre histoire.

Maintenant 4 language de base:

Le basic,le C,le C++, l' assembleur.

Retour

Assembleur

Ca va etre court car je ne connait rien a l' assembleur intel j' ai juste fait un peu d' assembleur sur mon amiga. L' assembleur est un language rudimentaire mais le plus rapide qui soit. Il y a autant d' instruction dans ce language qu' il y en a dans votre microprocesseur. Et ces instructions ont un format simple. Du style:"mov a,b" qui deplace b dans a ou encore "jmp x" qui saute a l' adresse x. Aussi des instructions comme add ou sub pour additionner et soustraire. Donc les programme assembleur compliquer sont tres longs et difficile a lire. L' assembleur c' est presque du code machine .Le code machine c' est ce language chiffrer qui seul peut faire fonctionner votre microprocesseur. C'est pourquoi il a etait inventer d' autre languages qui de toute maniere ce transforme automatiquement en code machine.

Retour

Basic

Language sublime par sa simplicite et sa rapidite de mise en oeuvre. Je ne connais que l' ancien basic des premier micro ordinateur avec deux type de variable: la variable numerique.Ex: A=10,B=5.2,C=A+B. Apres ca C vaut quinze virgule deux. Pour afficher ce resultat il y avait l' instruction Print.Voila un petit programme d' antant:

10 A=10

20 B=5.2

30 C=A+B

40 PRINT C

Et l' on ce retrouver avec un magnifique 15.2 a l' ecran. Ensuite il y avait la variable alphanumerique par exemple A$ on pouvait ecrire A$="Jerome" puis on pouvait faire PRINT A$ on peut aussi demander d' entrer un nom: INPUT"Entrez votre nom",NOM$ avait pour effet d' afficher la requete et de stocker la chaine de caractere que l' on entrer au clavier dans la variable NOM$.Il y avait donc des numeros de lignes.Voici un de mes premier programme en basic :

10 A=0

20 A=A+1

30 PRINT A

40 GOTO 20

50 END

Programme stupide mais qui me permetter de voir la vitesse d' affichage de mon basic et d' apprendre a compter. En effet a la ligne 40 l' instruction GOTO faisait que le programme se continuait a la 20 et non a la 50. Resultat ce truc n' avait pas de fin mais je constatait que l' ordinateur savait incrementer super bien. Par contre si mon ordinateur de l' epoque avait etait plus rapide j' aurais pu au bout d' un moment constatait qu' il ne pouvait pas m' afficher des nombres tres important. Cela s' appelle la precision. Avec des basic plus evoluer il n' y a plus de numero de ligne exemple avec le meme programme:

A=0

boucle:

A=A+1

PRINT A

GOTO boucle

"boucle:" est une etiquette. Comme pour les variable le texte utilisait(A,B,boucle) est au choix du programmeur. Il y a aussi l' instruction GOSUB. Encore le meme programme:

A=0

boucle:

PRINT A

GOSUB increment

GOTO boucle

increment:

A=A+1

RETURN

Alors la "increment" est senser etre un sous programme(SUBPROGRAM). Et des que l' instruction RETURN est rencontrer c' est l' instuction suivant immediatement le GOSUB qui est executer. Dans notre exemple: GOTO boucle. Cela dit ce dernier programme a une difference par rapport au deux premier,il commence son compte a prtir de zero alors que les deux autre commencer depuis 1 puisque le calcul A=A+1 etait avant le premier affichage. Si vous avez compris tout ca vous pouvez vous mettre a d' autre language. Le basic comprend un certain nombre d' instruction supplementaire suivant la marque du micro sur lequel il est installer et suivant son origine. Des instruction graphique ou sonore ou de calcul mthematique et encore de reservation memoire comme: DIM A(10) qui a pour effet de reserver un tableau de chiffre nommer A et contenant dix cellules: de A(0) a A(9). Ex: A(2)=10. Attention A(10)=10 genere une erreur car la numerotation commence a zero. Ce genre de concept est valable pour les autres languages. Je ne connais pas les languages Basic actuel car je prefere le C++ maintenant neanmoins si vous avez des infos pas de probleme envoyer moi ca.

Retour

C

En plus des instructions et des variables il existe dans ce language les pointeurs et les fonctions ainsi que les structures. Les pointeurs existes aussi en assembleur et meme dans le basic maintenant.

Avec ce language il faut definir le "type" de variable Ex: int a, long bobo, char c;. Et ainsi la place exacte que la variable prend en memoire le type "char" par exemple prend un octet et peu donc stocker un chiffre de 0 a 255(256 valeurs) mais aussi un caractere puisque une lettre dans la machine est representer par un code(ASCII par exemple). Si je veux stocker un mot je creer un tableau de caractere Ex: char mot[15];.Attention une chaine de caractere doit se terminer par zero donc dans notre exemple votre mot devras faire 14 caracteres de longueur pas plus.

La fonction:

Dans le "C" l' instruction goto existe toujours mais ne devrais pas etre utiliser. Gosub n' existe plus car le "C" est un language de sous programme par excellence. Et ces sous programme s' appelle des fonctions. Ex:

int Mafonction(int a)

{

a=a+1;

return a;

}

Ceci est une definition de fonction. Deux premiere chose qui font peur au debut: le point virgule et les accolades.Le point virgule est la fin de ligne si j' avais ecrit:

int Mafonction(int a){a=a+1;return a;}

ou

int Mafonction(int a){a=

a+1;return a;}

J' aurais ecrit la meme chose. Les accolades quand a elle definisse les blocs d' instructions. Dans notre exemple le bloc en question est le corps de la fonction. La regle est que plusieurs instruction entre accolade sont egale a une seule instruction sans accolade. Mais nous verrons plus loin d' autre exemples d' utilisation des accolades. En "C" le retour a la ligne ne compte donc pas pour separer les lignes de code. Aussi un certain nombre d' instruction peuvent etre grouper ensemble. Attention vous ne pouvez pas couper une instruction en deux quand meme. Maintenant pour utiliser ma fonction c' est tres simple je peux ecrire:

int monx=Mafonction(y);

Apres cela la variable monx vaudras y+1. Il faut savoir que cette ligne de code ne doit pas ce situer avant la definition de la fonction(plus haut) bien que cela soit possible. En effet il suffit d' ecrire en dehors de toute fonction(en haut du fichier source) ceci:

int Mafonction(int ); ou int Mafonction(int a);

ainsi cette fonction est "declarer" mais la fonction devras quand meme etre "defini" quelque part ,plus bas, ou dans un autre fichier lier. Une fonction peut recevoir plusieurs parametres en "entree" et un en "retour" voici plusieurs definition de fonction:

int FonctionX(int entree);

Est une fonction qui prend un entier comme argument et renvoi un entier.

void FonctionY(int x,float y,char z);

Est un fonction qui prend un entier, un nombre a virgule et un caractere en entree et qui ne renvoi rien.

unsigned int FonctionZebu(void);

Est une fonction qui n' a pas d' arguments(pas d' entree) et qui renvoi un entier non signer.

Dans la ces exemples je vous signale que vous apprenez des types nouveau. Ces types servent et pour les definition de fonctions et pour les definition de variable. Les fonction sont definis par vous et vous leur donner le nom que vous voulez. Rassurez vous, vous pouvez utiliser beaucoup de fonctions disponibles avec les compilateurs. Elles couvrent les utilisations courantes: Calcul, affichage, entree/sortie, etc...

Les types:

Les types s' ecrivent en minuscule car les compilateur sont tres sensible a la casse des caracteres aussi l' utilisation de la majuscule est par convention et non par obligation reserver au fonction.

void

Le type void qui est un type qui n' a pas de type(Gag!). Une variable ne peut pas etre du type void. Puisque void n' a pas de taille ou plutot a une taille variable. Parfois void sert a definir un type de pointeur particulier.

char

On n' a a deja parler ce type est egal a un octet, c' est a dire, 8 bits. char peut representer un caractere ascii, un chiffre de -127 a +128 ou de 0 a 255 pour le type unsigned char.

int

Generalement, du moins, sur mon PC, ce type vaut deux octets et peut donc representer des chiffres de 65536 valeurs differentes. C'est a dire de -32767 a 32767 pour le type int tout court et de 0 a 65535 pour le type unsigned int.

long

Le type long prend 4 octets et represente en signer des valeurs d' a peu moins deux milliards a plus deux milliard. En tant que unsigned long les valeurs s' echelonnent de 0 a 4000000000.

unsigned

Unsigned est un type qui vous l' avez compris peut ce placer devant un autre mais aussi etre seul. On s' en sert pour definir que le nombre utiliser n' a pas de signe.

Il existe aussi un type particuliers qu' est le champ de bits ce type permet de definir une variables ayant X bits de tailles. Par exemple 4 bits pour stocker des valeurs de 0 a 15.

LE POINTEUR

Je l' ai ecrit tres gros car le pointeur est delicat. Je pointeur ne contient pas de valeur. Le pointeur pointe une adresse memoire qui contient la valeur. Le pointeur contient ou non une adresse. Le pointeur porte n' importe quel nom comme une variable et il est difficile de le reconnaitre. C'est pour ca que par convention sa premiere lettre est un p. Mais la encore ce n' est pas obligatoire. Un pointeur pointe sur une adresse ayant la taille d' un type comme un pointeur sur un int ou sur un char ou sur un unsigned char. Voici comment definir un pointeur un entier non signer:

unsigned int * pentier;

Il a suffit de placer le signe *(multiplier) entre le type et le nom.Mais attention pour l' instant ce pointeur ne pointe sur rien. Pour exemple faisons un tableau d' entier non signer puis pointons le premier elements:

unsigned int tablette[10];

pentier = &tablette[0];

Maintenant pentier contient l' adresse memoire a laquelle ce trouve stocker la valeur tablette[0]. La ou c'est interressant, si on fait:

pentier=pentier+1;

*pentier=10;

Eh bien tablette[1] est egal a 10. Et ceci a nouveau grace au * .Si vous avez rien compris ecrivez moi. Je ne m' attarde pas le pointeur, c' est puissant et ca peut meme pointer sur une fonction.Et puis mais connaissance sont limiter mais le pointeur conduit a l' illimitter car il peur pointer des variable que vous creer .Vous n' etes donc plus limiter dans le nombre de variable que vous penser utiliser.

LA STRUCTURE

La structure aussi en C est formidable:

struct MaStructure

{int x;int y;char * nom;unsigned char vitesse;

float angle;};

MaStructure smonstre;

smonstre.x=10;

smonstre.y=21;

On peu grace a la structure stocker plusieurs type de variable dans une seule et cela est plus que pratique. Je continuerais plus tard....1/6/99

Retour

 

Pour le connaisseur:

Un peu d' anticipation, dans cette rubrique. J' aborde un sujet qui me passionne, la robotique et les quatre logiciels que j' ai imaginer pour faire fonctionner cette hypothetique etre artificiel. Ces programmes je les ai imaginer a la base pour etre utiliser dans un jeu de science fiction en cours d' elaboration. Et si vous etes amateur comme moi des films de george lucas sachez que je prefere le IRTOO TITOO au SITRIPIO. Je n' aime pas l' idee qu' un robot puisse ressembler a un homme. Il est interresant que le robot puisse aider l' homme et si il le remplace au travail il faut que l' homme en ai un autre. Et que la production du robot soit pour l' homme gratuite. Si on ce trouve dans un autre cas de figure le robot n' est plus une aide mais une calamite generatrice de stress et de chomage. Il ce pourrait d' ailleurs que le robot soit un reel danger comme dans les films de S.F qualifier de stupide et de paranoiaque. En effet certaine personnes douer en I.A(Intelligence Artificielle) s' amuse a ecrire des programme dont il ne peuvent predire a l' avance le fonctionnement. Ainsi ce programme (souvent relier a plusieurs capteurs) s' automodifie suivant des stimulis exterieur. Confirons nous un jour nos vies a des programmes de ce genres?

Les quatres programmes a faire:

L' interface:

C' est un melange de logiciel de reconnaissance vocale et d' intelligence artificielle qui permet de programmer le robot en language courant. Il lui permet aussi de parler un language specifique au transfert rapide de donnees entre machine et robot. (le shhhhh d' internet vous savez, au telephone, pendant la connection)

Le formeur tridimensionnel:

Ce logiciel utilise les capteurs du robot pour construire un scene virtuelle reflet de l' endroit reel ou ce trouve le robot ainsi par comparaison il est capable de se situer dans l' espace. Les capteurs utiliser peuvent etre de plusieurs sorte. Par exemple deux cameras peuvent fournir une image stereoscopique transformable en scene 3D. Analyse de forme par solarisation et painting de l' image. Mesure par palpation. Telemetrie laser ou sonore. La scene ce construit au fur et a mesure de sa decouverte.

L' interpreteur tactique:

Est le logiciel qui calcule les effets et les conscequences des actes du robot a l' avance. Un certain nombre de regle physique elementaire est contenu a l' interieur et permet de mettre au point une strategie pour obtenir le resultat. Il est traiter ici des effets du temps. Coupler avec le formeur ce programme genere des resultats de calculs cinematiques.

L' ordinateur:

Est le logiciel interface qui commande les membres du "robot" pour lui permettre d' agir sur son environnement.

Ces quatres programmes ce retrouve lier pour former le systeme d' exploitation du robot.

Retour