★ APPLICATIONS ★ PROGRAMMATION ★ PASCAL FACE AU BASIC ★ |
Pascal Face Au Basic | Applications Programmation |
Dans la bibliothèque des logiciels pour AMSTRAD, il existe un compilateur PASCAL relativement performant.Nous avons choisi, pour vous montrer l'intérêt d'un tel programme, de résoudre un problème complexe : la transformée rapide de FOURIER. La version PASCAL compilée montre bien les performances de ce langage face à la lenteur du Basic interprété. Les deux programmes qui suivent sont écrits dans deux langages différents : BASIC et PASCAL et traitent d'un même problème, le tracé du spectre d'un signal après calcul de sa transformée de FOURIER. Rappelons que la transformée de FOURIER permet d'obtenir une représentation en fréquence d'un signal. Cette représentation est donnée par l'analyseur de spectre qui visualise l'amplitude des composantes d'un signal en fonction de la fréquence, alors que l'oscilloscope visualise l'amplitude du signal en fonction du temps. Lorsque le signal est périodique, le spectre se compose de raies. Il existe différents algorithmes qui permettent de retrouver rapidement les composantes de ce spectre à partir d'une suite d'échantillons d'amplitude d'un signal échantillonné dans le temps. Afin de minimiser le nombre des calculs à effectuer, nous utiliserons un algorithme de transformée de FOURIER rapide utilisant la méthode du dédoublement des échantillons. Mais le but de ces quelques lignes n'est pas de refaire une étude de la transformée de FOURIER rapide, mais d'en donner une application sur CPC 464 en Basic interprété et en Pascal, afin de montrer l'intérêt d'un langage compilé et de montrer la souplesse d'utilisation du Pascal sur AMSTRAD. Dans les deux listings, nous retrouvons pratiquement les mêmes instructions à la différence de syntaxe près. Nous trouvons en plus, au début du listing Pascal, les déclarations de procédures graphiques nécessaires au tracé du spectre et du signal temporel. On remarquera au passage que l'utilisation de toutes les possibilités graphiques de l'AMSTRAD est aisée en Pascal et qu'il en va de même pour le son ou les interruptions. Ceci est dû à l'existence de variables prédéclarées correspondant aux registres du Z80 et à la procédure USER qui permet comme en Basic l'appel d'un sous-programme en langage machine. Pour les deux listings nous retrouvons les blocs suivants : - Calcul des échantillons d'un signal temporel. Ici, c'est un signal rectangulaire avec un facteur de forme de 1/6 sur deux périodes ; en BASIC, le nombre d'échantillons est entré au clavier sous la forme d'une puissance de deux (ceci est lié à l'algorithme de FFT utilisé). En Pascal, ce nombre est fixé à 256 par la CONSTANTE SIZE ; pour le modifier, il suffit de changer l'affectation de SIZE.
Le programme BASIC met 105 secondes pour calculer la FFT sur 256 points alors que le programme PASCAL met 20 secondes. Nous voyons donc que le gain de temps n'est pas négligeable. Il faut cependant savoir que cet exemple n'est pas en faveur du Pascal, car il y a un grand nombre de sinus à calculer et que le temps de calcul d'un sinus est important et pratiquement identique en Pascal et en Basic. Rappelons que le Pascal utilisé est le Pascal Hisoft sur cassette. Ce Pascal est très intéressant par son rapport performance/prix. Notons toutefois pour ceux qui ne l'ont pas utilisé, qu'il ne possède pas la notion de fichiers, et que les WRITE ou les READ se font vers l'écran et depuis le clavier. Il ne connaît donc pas INPUT, OUTPUT. De même, cet exemple ne traite pas les principaux avantages du langage Pascal qui sont la redéfinition de type, les enregistrements et les pointeurs. Nous reviendrons plus en détail sur Pascal dans nos prochains numéros.
|