FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Yannick Aujourd'hui à 1:58

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Hier à 19:26

» Compilateur FBPano
par Mike Hier à 13:52

» un nouveau editeur panobasic
par Jean Claude Hier à 10:18

» Le compilateur.
par Pedro Alvarez Hier à 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Pour RMont

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Pour RMont   Mar 19 Mar 2013 - 7:05

Dans un autre topic

RMont a écrit:
pour ma part, je consulte tout les jours les codes postés dans l'espoir de voir comment faire fonctionner un tableau a 2 dimensions sans que systematiquement il faille passer par une case validation.
Franchement je n’ai pas compris ce que tu demandes au juste et je t’invite à poser des questions : il y aura toujours quelqu’un pour apporter la réponse.

Ceci dit, voici quelques informations qui pourront t’être utiles.

Un tableau, c’est quoi ?

Un tableau est une variable constituée de plusieurs cases d'un type donné, chacune capable de mémoriser une information du type en question.
Un tableau à une dimension est constitué d'une seule ligne et de plusieurs colonnes.
Un tableau à deux dimensions est constitué de plusieurs lignes et de plusieurs colonnes.

Le terme de liste ou vecteur est souvent utilisé pour désigner un tableau à une dimension. Le terme de matrice est parfois utilisé, comme en mathématiques, pour désigner un tableau à plus de une dimension.

Il est assez fréquent d'avoir à utiliser de nombreuses données d'un même type... et il n'est pas vraiment pratique d'utiliser un grand nombre de variables différentes : premièrement, il faut trouver des noms pour toutes ces variables, mais, en plus, avoir des variables différentes ne permet pas de toutes les traiter dans une boucle.

Un tableau permet de remédier à ces deux problèmes : plutôt que d'utiliser de nombreuses variables nommées a1, a2, a3, ..., a150, autant utiliser une seule variable, nommée, par exemple, 'a', qui contienne les 150 données.
Code:
 DIM a(150)
En réalité dans cette déclaration, la variable a contient 151 éléments puisque le 1er indice commence à 0 (zéro).

Exemple 1
Nous allons remplir un tableau avec des nombres entiers générés aléatoirement, puis nous afficherons le contenu.
Code:
 DIM tableau(9) : ' déclaration de la variable tableau à 10 éléments (de 0 à 9)
dim i : ' variable compteur
' On remplit le tableau avec des valeurs aléatoires entre 1 et 100
for i = 0 to 9 : tableau(i) = int(rnd(100)+1) : next i
' On affiche les valeurs du tableau
for i = 0 to 9 : print "case ";i ; " ---> "; tableau(i): next i

Panoramic permet aussi de déclarer des tableaux à 2 dimensions.
Code:
DIM tab(10,20)
permet de déclarer un tableau de 11 lignes (de 0 à 10) et de 21 colonnes ( de 0 à 20)

Exemple 2 :
Dans cet exemple, on mémorise dans un tableau à 2 dimensions (une matrice) les tables de multiplications de 6, 7 et 8.
Remarque : on aurait pu nous dispenser d’utiliser un tableau pour ce genre de programme
Code:
 DIM tab(10,3)
DIM i,j

for j = 0 to 3
    for i = 0 to 10
        tab(i,j) = (i+1)*(j+5)
    next i
next j

for i = 0 to 9
    print "6 * ";i+1;" = "; tab(i,1) ; "  ";
    print "7 * ";i+1;" = "; tab(i,2) ; "  " ;
    print "8 * ";i+1;" = ";tab(i,3)
next i


Voici un programme qui affiche la table de multiplication de 2 à 9 en n’utilisant pas les variables du type tableau.
Code:
 ' ******************************************************************************
'
'                Table_Multiplication.bas
'                      par Papydall
'
' ******************************************************************************

' Exemple d'appel des procédures

' ==============================================================================
' Ici débute le module principal du programme
' Il se limite à la seule procédure 'Demarrer' qui fait appel aux autres procédures
Demarrer()
end  : '  Fin du programme
' ******************************************************************************
SUB Demarrer()
    Init() : ' Appel de la procédure d'initialisation
    Affiche("T A B L E  D E  M U L T I P L I C A T I O N",240,10) : ' Appel de la procédure d'affichage
    Affiche(string$(48,"*"),240,40) : ' 2ème appel de la procédure d'affichage avec d'autres paramètres
    for m% = 2 to 9 : ' Boucle d'appels de la procédure table avec passage de
      table(m%)    : ' paramètre par valeur
    next m%
END_SUB

' ==============================================================================
' ******** INITIALISATION
' Procédure INIT() sans paramètres d'appel mais les parenthèses sont obligatoires
SUB init()
    dim m% : ' Seule cette variable est globale
    width 0,800  : height 0,700 : ' Dimension de la fénêtre d'affichage
    color 0,0,0,0 : font_color 0,0,255,0 : ' Fond noir, texte en vert
    font_size 0,12 : font_bold 0 : ' Taille de la police et affichage en gras
    caption 0,"Table de multiplication" : ' Titre de la page principale du programme
END_SUB
' ==============================================================================

' ******** Afficher un texte à l'écran
' Le texte ainsi que la position de l'affichage sont passés comme paramètres
' formels par le module appelant
' Procédure Affiche : les 3 paramètres d'appel sont locaux
SUB Affiche(texte$,colonne%,ligne%)
    print_locate colonne%,ligne% : print texte$
END_SUB
' ==============================================================================
' ******** Afficher la table
' Affiche une table de multiplication : le multiplicande(m%) est passé comme
' paramètre formel par le module appelant.
' Le multiplicateur i% est déclaré dans la procédure comme variable locale
SUB table(m%)
    DIM_LOCAL i%,s$,lig%,col% : ' variables locales : à la sortie de la procédure
                                ' elles seront automatiquement éliminées.
    affiche(string$(54,"_"),150,50): ' Une procédure peut appeler une autre
    col% = 150*(m%-1): lig% = 70
    if col% > 600
      col% = col%-600 : lig% = 320
    end_if
    for i% = 1 to 9
        s$ = str$(i%*m%)
        if i%*m% < 10 then s$ = "  "+s$
        print_locate col%,lig% : print str$(i%)+" X "+str$(m%)+" = "+s$
        lig% = lig%+20
    next i%
    affiche(string$(54,"_"),150,270)
    affiche(string$(54,"_"),150,500)
END_SUB
' ==============================================================================

Et pour terminer je reprends ( en le mettant à la mode SUB) un programme de calcul des carrés magiques que j’ai posté à mes débuts.
Ce programme utilise un tableau à 2 dimmensions.

Code:
 ' ******************************************************************************
' *    CARRE MAGIQUE PAR PAPYDALL
' *
' ******************************************************************************
dim n    : ' ordre du carré magique doit être impair
dim somme : ' Somme des toutes les lignes, des toutes les colonnes et des 2 diagonales principales
dim titre$ : titre$ = "C A R R E  M A G I Q U E  D ' O R D R E "
ordre() : caption 0,"Papydall vous présente    " + titre$ +str$(n)
dim matrice(n,n) : ' déclaration de la matrice (ou tableau) à 2 dimensions
full_space 0 : color 0,0,0,0 : font_color 0,255,255,0: font_name 0,"consolas"
magic()      : ' Appel à la procédure du calcul du carré magique
end
' ==============================================================================
' Saisie de l'ordre n du carré
SUB ordre()
    dim_local r$, nmax
    nmax = 37  : ' Ordre max du carré à adapter selon la résolution de votre écran
    repeat      : ' Cette boucle assure que l'ordre soit impair et compris entre 3 et nmax
        repeat  : ' Cette boucle assure que le coefficient soit numérique
              r$ = message_input$("Entrer l'ordre du carré magique", "( impair et compris entre 3 et "+str$(nmax)+" )"+chr$(13)+"N = ",str$(nmax))
        until numeric(r$) = 1
    until val(r$) > 3 and val(r$) <= nmax and odd(val(r$)) = 1
    N = val(r$)
END_SUB
' ==============================================================================
' affichage du carré
SUB affichage()
    dim_local i,j,a$
    for i = 1 to n
        print : print "ligne" ; : a$ = str$ (i) :  formatage(a$) : print  ": " ;
        for j = 1 to n : a$ = str$ (matrice (i,j)) : formatage(a$) : next j
    next i
    print : print : print string$(50," ");
    print "La somme de toutes les lignes,toutes les colonnes et les 2 diagonales principales est : " ; somme
END_SUB
' ==============================================================================
' calcul de la matrice
SUB magic()
    dim_local i,j,n2,nombre
    n2 = n * n
    j = int(n / 2) : i = j + 1
    for nombre = 1 to n2
        if i < n : i = i + 1 : else : i = 1 : end_if
        if j < n : j = j + 1 : else : j = 1 : end_if
        while matrice(i,j) > 0
            if i < n : i = i + 1 : else : i = 1 : end_if
            if j > 1 : j = j - 1 : else : j = n : end_if
        end_while
        matrice(i,j) = nombre
    next nombre
    somme = n * (n2 + 1) / 2
    affichage()
END_SUB
' ==============================================================================
' On ajoute les espaces necessaires pour la justification à gauche
SUB formatage(s$)
    dim_local i,l,a$
    l = len (s$): a$ = s$
        a$ = string$(5-l," ") + a$
    print a$ ;" ";
END_SUB
' =============================== FIN ==========================================



Puisse ma prose te soit utile !
Et surtout pose toutes les questions sur lesquelles tu désires avoir des éclaircissements.
On te repondra.


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7962
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 19 Mar 2013 - 7:09

Amen ... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



Nombre de messages : 165
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Pour RMont   Mer 20 Mar 2013 - 21:13

bonjour a tous.
pour papydall.
désolé papydall,je n'ai pu te dire merci (hier) pour ce tuto car j'ai procédé à une grosse maintenance de mon ordi (elimination des coockies , traces suspectes )etc etc.
je vais étudier ces codes des que je peux..
[/left]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Pour RMont   

Revenir en haut Aller en bas
 
Pour RMont
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» code pour inséré les anime (Fond transparent)
» Plugins Firefox pour sécuriser votre navigateur.
» Pb pour le choix de la voie
» hébergeur gratuit pour un site rein quand flash(RESOLUT)
» Affiches comment être et faire pour apprendre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: