FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Pour RMont Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Pour RMont Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Pour RMont Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Pour RMont Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Pour RMont Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Pour RMont Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Pour RMont Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Pour RMont Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Pour RMont Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Pour RMont Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Pour RMont Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Pour RMont Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Pour RMont Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Pour RMont Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Pour RMont Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le deal à ne pas rater :
SSD interne Crucial BX500 2,5″ SATA – 500 Go à 29,99€
29.99 €
Voir le deal

 

 Pour RMont

Aller en bas 
3 participants
AuteurMessage
papydall

papydall


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

Pour RMont Empty
MessageSujet: Pour RMont   Pour RMont EmptyMar 19 Mar 2013 - 5: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
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Pour RMont Empty
MessageSujet: re   Pour RMont EmptyMar 19 Mar 2013 - 5:09

Amen ... Laughing
Revenir en haut Aller en bas
RMont




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

Pour RMont Empty
MessageSujet: Re: Pour RMont   Pour RMont EmptyMer 20 Mar 2013 - 19: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
Contenu sponsorisé





Pour RMont Empty
MessageSujet: Re: Pour RMont   Pour RMont Empty

Revenir en haut Aller en bas
 
Pour RMont
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» P'tit cadeau pour Rmont
» Aide-mémoire des mots-clés Panoramic
» Petits jeux pour enfants et pour moins jeunes
» Aide pour la création d'un wrapper pour le langage Linotte.
» Pour mes petits-enfants et pour les vôtres

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