Forum

Catégorie : Discussions générales
Forum : Espace de liberté
Vues : 723
Réponses : 12
Type : discussion
Etat : réponses autorisées

Mon premier programme mathlab

Sangohan38 le 28/05/2011 à 22:28
Aujourd'hui, je vais vous faire découvrir mon premier programme en basic sur le logiciel mathlab (logiciel de calcul numérique).
Il s'agit d'un morpion très basique mais comme vous allez le constater, la programmation n'est pas aisée tant certaines fonctions manquent par rapport à la calculatrice.

Voici le code:

Code
clear all
close all
A=[0 0 0;0 0 0;0 0 0];
B=[0 0 0;0 0 0;0 0 0];
C=[0 0 0;0 0 0;0 0 0];
J=-1;
disp 'Joueur 1 en rouge'
disp 'Joueur 2 en bleu'
while abs(C(1,1)+C(1,2)+C(1,3))<3 & abs(C(2,1)+C(2,2)+C(2,3))<3 & abs(C(3,1)+C(3,2)+C(3,3))<3 & abs(C(1,1)+C(2,1)+C(3,1))<3 & abs(C(1,2)+C(2,2)+C(3,2))<3 & abs(C(1,3)+C(2,3)+C(3,3))<3 & abs(C(1,1)+C(2,2)+C(3,3))<3 & abs(C(3,1)+C(2,2)+C(1,3))<3
    J=-J;
    if J==1
        disp 'Joueur 1:'
    end
    if J==-1
        disp 'Joueur 2:'
    end
    X=input('abscisse=');
    Y=input('ordonnée=');
    if J==1
        A(Y,X)=J;
    end
    if J==-1
        B(Y,X)=J;
    end
    C(Y,X)=J;
    hold on
    spy(A)
    spy(B,'r')
end


On constate déjà que le = suffit pour affecter une valeur (attention au sens: la variable est à gauche du signe).
L'autre soucis majeur rencontré c'est pour vérifier des conditions l'obligation de mettre un == (et j'ai mis un moment avant d'y trouver).
Par contre l'avantage majeur de ce logiciel c'est que tout est matrice: on peut multiplier et même diviser membre à membre ... bref un rêve.
Et le must du must, c'est que c'est sur ordinateur donc on peut faire des programmes bien plus compliqués que sur calto tout en gardant une vitesse d'exécution étonnante.

Pour ceux que ça intéresse, voici un lien pour le télécharger.

En conclusion, si vous trouvez la programmation sur calto trop basique et limitée mais que d'autres langages plus compliqués ne vous intéressent pas, voici le logiciel qui vous permettera de vous épanouir dans la programmation glasses.gif.

Sangohan38
linkakro le 28/05/2011 à 22:58
Il y a des conventions de languages avancés, mais présentées comme le basic de notre calculatrice ! Chouette ! bigmouth.gif

ps : le double égal est facile à deviner quand on a déjà utilisé du C pour microcontrôleur tongue.gif
sandro le 28/05/2011 à 23:08
c'est quoi l'équivalent de "spy(" et de "hold on" sur TI et ça correspond à quoi le "en rouge" et le "en bleu" : si c'est censé être une coloration pour différentier les joueurs, où est indiqué d'afficher de la couleur?

Sandro

PS : je pense déja aprendre l'ASM pendant les vacances, ce progil attendra.
azerty1 le 28/05/2011 à 23:12
D'après le nom, ça ressemble a du codTouche non...?
sandro le 28/05/2011 à 23:21
lequel "spy(" ou "hold on" (je suis nul en anglais (enfin j'en suis à ma 3ème année avec des profs de M....(mercredi) ) )
Sandro
azerty1 le 28/05/2011 à 23:25
Plutot hold on, qui pourrait se traduire par maintenir je pense, spy veut dire espionner je crois... Donc je ne sais pas trop...
sandro le 28/05/2011 à 23:26
merci quand même
Sandro
Sangohan38 le 29/05/2011 à 10:11
Content de voir que j'ai pas bider avec ce programme godgrace.gif .
Pour le spy, ça affiche la matrice sous forme de points (en gros ue matrice 3*3 avec tous ces coefficients non nuls affiche un carré de 3*3).
Le hold on, c'est pour permettre de superposer les différents graphs.
Enfin, le 'en rouge' et 'en bleu', c'est juste du texte que j'affiche pour différencier les joueurs.

Sangohan38
sandro le 29/05/2011 à 10:17
mais ils sont réellement mis en couleur ou non les pions des joueurs, si oui par quelle commande

Sandro
Sangohan38 le 29/05/2011 à 10:22
Il sont mis en couleurs. La couleur par défaut est le bleu c'est pour sa que dans mon second spy il y a l'argument 'r' pour dire que je le veux en rouge.

Sangohan38
sandro le 29/05/2011 à 10:27
Maintenant je comprend tout sanf un petit élément : quelle est la "forme" affichée pour les cases ocupées?

Merci d'avance
Sandro
Sangohan38 le 29/05/2011 à 10:30
J'ai laissé la forme par défaut c'est-à-dire un multiplier *.

Sangohan38
sandro le 29/05/2011 à 10:37
merci beaucoup
Sandro