REDIM [Algorithmie]
Fermé
PRK
Messages postés
799
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2015
-
4 sept. 2008 à 11:00
PRK Messages postés 799 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 - 4 sept. 2008 à 20:08
PRK Messages postés 799 Date d'inscription mardi 4 septembre 2007 Statut Membre Dernière intervention 6 décembre 2015 - 4 sept. 2008 à 20:08
A voir également:
- Redim algorithme
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Code ascii algorithme - Guide
- Algorithme euromillion excel gratuit - Forum Algorithmes / Méthodes
- Tri d'une matrice algorithme - Forum C
2 réponses
Le problème est que je ne comprends pas très bien ce que tu veux dire par "de façon officielle". Enfin, je devine.
La question est-elle: peut-on dimensionner un tableau de façon dynamique (c'est-à-dire ne pas connaître la taille du tableau a priori, mais en cours d'exécution, comme ton bout d'algorithme le laisse comprendre) ?
En fait, non.
Non, parce que normalement ("officiellement" ;-)), un programme doit savoir a priori quelle taille allouer à ses variables : par exemple pour un tableau réservé pour 10 nombres flottants sur 4 octets, etc. Le type de tableau dont on parle ici s'implémente en mémoire par la réservation préalable d'un espace contigu, de 10 x 4 octets en l'occurrence.
Peux-tu utiliser redim sans utiliser dim au préalable ? Je n'ai pas essayé. Mais de toute façon, je pense que VB ou autre langage de script te réserve d'abord un espace fixe, mais qu'à chaque demande de redimensionnement explicite, il recrée pour toi un nouveau tableau à la taille désirée (avec éventuellement une recopie des éléments par l'option redim preserve). Alors qu'en java par exemple, lorsqu'on veut redimensionner des tableaux, on doit écrire soi-même tout le code : création d'un tableau vierge de la nouvelle taille + recopie éventuelle des éléments de l'ancien tableau vers le nouveau, et suppression de l'ancien tableau. Cela doit être analogue en C, avec des instruction malloc (memory allocation).
C'est bien la preuve que ta prof pourrait bien avoir "officiellement" raison, mais surtout, pour une bonne compréhension de la programmation, qu'il faut se méfier des "facilités" qu'apportent les langages de script comme VB, utiles pour la programmation, mais qui te masquent tous les mécanismes sous-jacents.
Cela dit, le système de réservation d'un espace contigu n'est pas le seul utilisé. En C par exemple, les tableaux peuvent être implémentés comme des listes par des pointeurs. Les chaînes de caractères sont des tableaux de genre. L'espace n'a pas besoin d'être contigu, donc la taille peut être inconnue à l'avance. Les listes dynamiques contient des éléments composés 1) d'une valeur, 2) de l'adresse mémoire de la valeur suivante.
La question est-elle: peut-on dimensionner un tableau de façon dynamique (c'est-à-dire ne pas connaître la taille du tableau a priori, mais en cours d'exécution, comme ton bout d'algorithme le laisse comprendre) ?
En fait, non.
Non, parce que normalement ("officiellement" ;-)), un programme doit savoir a priori quelle taille allouer à ses variables : par exemple pour un tableau réservé pour 10 nombres flottants sur 4 octets, etc. Le type de tableau dont on parle ici s'implémente en mémoire par la réservation préalable d'un espace contigu, de 10 x 4 octets en l'occurrence.
Peux-tu utiliser redim sans utiliser dim au préalable ? Je n'ai pas essayé. Mais de toute façon, je pense que VB ou autre langage de script te réserve d'abord un espace fixe, mais qu'à chaque demande de redimensionnement explicite, il recrée pour toi un nouveau tableau à la taille désirée (avec éventuellement une recopie des éléments par l'option redim preserve). Alors qu'en java par exemple, lorsqu'on veut redimensionner des tableaux, on doit écrire soi-même tout le code : création d'un tableau vierge de la nouvelle taille + recopie éventuelle des éléments de l'ancien tableau vers le nouveau, et suppression de l'ancien tableau. Cela doit être analogue en C, avec des instruction malloc (memory allocation).
C'est bien la preuve que ta prof pourrait bien avoir "officiellement" raison, mais surtout, pour une bonne compréhension de la programmation, qu'il faut se méfier des "facilités" qu'apportent les langages de script comme VB, utiles pour la programmation, mais qui te masquent tous les mécanismes sous-jacents.
Cela dit, le système de réservation d'un espace contigu n'est pas le seul utilisé. En C par exemple, les tableaux peuvent être implémentés comme des listes par des pointeurs. Les chaînes de caractères sont des tableaux de genre. L'espace n'a pas besoin d'être contigu, donc la taille peut être inconnue à l'avance. Les listes dynamiques contient des éléments composés 1) d'une valeur, 2) de l'adresse mémoire de la valeur suivante.
Oui, on peut tjrs redimensionner un tableau en VB, mais sache seulement qu'en réalité, dans la mémoire, ce ne sera sans doute pas dans le même emplacement, même si tu ne le vois pas (sauf peut-être si tu le redim avec un nombre inférieur d'éléments !)
PRK
Messages postés
799
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2015
113
4 sept. 2008 à 20:08
4 sept. 2008 à 20:08
Oui je suis daccord avec toi.
Moi apres c'est juste pour savoir si je peut l'utiliser. Je ne suis pas dans une section de prog, mais plutot de réseaux. Donc voila je voulais juste savoir si ca s'utilisais car un de nos ancien prof me l'avais apris, mais cette année notre nouveau etait etonné d'entendre parler de ça (pas tres coordonné tout ça) ^^'
Moi apres c'est juste pour savoir si je peut l'utiliser. Je ne suis pas dans une section de prog, mais plutot de réseaux. Donc voila je voulais juste savoir si ca s'utilisais car un de nos ancien prof me l'avais apris, mais cette année notre nouveau etait etonné d'entendre parler de ça (pas tres coordonné tout ça) ^^'
4 sept. 2008 à 15:13
Donc si l'on doit se soucier de l'espace memoire reservé pour le tableau.
Il faudrait au prealable declarer un tableau auquel on lui affectera lors de sa declaration une valeur (par exemple 100 ce qui fera 100 cellules) et par la suite alors je pourrais tout de même le redimensionner avec un "redim" pour que cela soit plus "juste" ou "officiel" ;) ?
Car oui comme tu dis dans certains langages il y a des fonctions pre-faite pour accellerer & economiser des lignes de code. mais par exemple en C (console) il me semble que l'on peut pas declarer un tableau vide par exemple..
Merci de ton aide en tout cas :)