Obligement - L'Amiga au maximum

Jeudi 21 septembre 2017 - 07:09  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Algorithmes et structures de données - introduction et Pascal Libre
(Article écrit par Chorizo Kid et extrait d'A-News (Amiga News) - mai 1989)


De retour d'un congrès sur la pensée freudienne dans le 68030, je trouvais dans ma boîte aux lettres une lettre d'un certain Yves Remord, habitant de Jarnac (Charentes) pays du Cognac et des MouetPièts ; celui-ci demandait "... je cherche un algorithme pour calculer simplement les racines carrées. A ce propos, pourquoi vous, A-News, qui avez un visionnaire dans l'équipe, n'avez pas encore fait une rubrique sur les bases et théories de la programmation...".

Bonne question notais-je, mais le visionnaire s'en était allé ! Alors c'est ce bon vieux Chorizo, grand mamamouchi shooté au bifidus actif, dernier détenteur du flambeau des initiations que même les Bogdanoff ne voudraient pas (Bruce Lepper : bon, on va commencer l'article un jour ?), qui s'y colle.

Je vais donc essayer de vous parler d'ASD, c'est-à-dire d'"algorithmes et structures de données".

ASD, introduction

Frédéric Autechaud qui est à côté de moi en train de colorier l'annuaire du Finistère me demande à quoi ça sert l'ASD ? Et bien, grosso merdo, on va avoir des causeries sur les piles, les files, les arbres, les tris, les listes chaînées et tout ce genre de choses, indispensables dès que vous voulez faire un programme digne de ce nom.

Je commence l'introduction. Tout d'abord, qu'est-ce qu'un algorithme ? Formellement, c'est une suite ordonnée d'opérations pour passer de données à un résultat !

Un petit exemple pour détendre l'atmosphère : un algo simple pour calculer les racines carrées (pour les carrés non parfaits il faudra faire un encadrement de la valeur cherchée). Or, donc on a comme données "carré" dont on cherche la racine carrée, "racine" qui va contenir la racine cherchée, "impair" qui est une variable qui va contenir les nombres impairs successifs (1 puis 3, 5, 7...) et enfin "test" qui va contenir la somme des nombres impairs (1 au premier tour de boucle, puis 1+3, puis 1+3+5, 1+3+5+7...).

L'algo :

Algorithme

Exemple, je cherche la racine de 16 :

Algorithme

Bon, c'est un exemple avec un petit nombre, et en plus c'est un algo simple donc pas vraiment efficace, on en verra des hachement plus mieux.

Vous avez vu que l'algo est écrit dans un langage bizarre. C'est du Pascal Libre qui est par convention le langage d'écriture d'algorithmes. Don't worry, ça ne va pas vous faire un langage de plus à ingurgiter ; certes le Pascal Libre provient directement du Pascal, mais d'une part il est en français donc facilement lisible et compréhensible, d'autre part on utilisera presque toujours des axiomes simples pour décrire l'algorithme, on sera donc très près d'un langage tel que le C. Et puis A-News c'est comme les recettes légères de Marie, ce n'est pas parce que le journal il est tout prêt (quoique des fois !) que vous n'avez rien à faire.

Ce que vous devez savoir du Pascal Libre

Nous avons des constantes : ce sont des nombres ou des caractères (yagut:=69;assis:="bonanga";).

Il y a aussi des variables définies par leur nom, leur type et leur valeur.

Un type est un ensemble de valeurs possibles pour la variable (entier, réel, caractère).

Une variable peut être indicée, ce sera alors un tableau : à une dimension on aura un vecteur (V[i]), à deux dimensions on aura une matrice (M[i][j]). Une matrice, c'est comme à la bataille navale, c'est un tableau repéré par des lignes et des colonnes, A2 coulé (ligne A, colonne 2).

Une expression arithmétique est tout simplement un calcul du style (A+3)*B.

Une expression booléenne c'est rien qu'avec des Vrais et des Faux du genre (A ou B) (A est vrai ou B est vrai), (A et R) (A est vrai et B est vrai), (A ou (B=C)) (A est vrai ou B est égal à C).

L'affectation est notée := (Blurb:=666; par exemple ou positif := (A>=0) qui signifie que la variable booléenne positif sera à vrai si A est supérieur à 0, à faux sinon).

Une instruction est une instruction (LIRE(X); ECRIRE(X); fonctions de lecture et d'écriture de la variable X).

Les structures de contrôle : il y en a de trois types :
  • si alors sinon : c'est la boucle classique de tous les langages avec la syntaxe si P alors S1 sinon S2, où P est un prédicat, et S1 et S2 des suites d'instructions.

  • Boucle tant que P faire S : le test de sortie de la boucle est ici en tête. Exemple : division entière de "x" par "y" par soustractions successives;

    debut
    q:=0
    r:=x
    tant que r>=y faire
    debut
    r:=r-y
    q:=q+1
    fin
    fin

    Voilà. Le résultat sera à la fin dans "q", le reste de la division dans "r". Essayez en faisant tourner à la main. Les debut-fin délimitent des blocs (équivalents aux {...} en C).

    Un cas particulier de la boucle tant que est la boucle pour.

    I:=1
    tant que I<=N faire
    debut
    S
    I:=I+1
    fin

    ...s'écrira plus simplement :

    pour I=1 a N faire S

  • Boucle repeter S jusqu'a P : dans cette boucle le test de sortie est à la fin, donc la suite d'instructions S sera exécutée au moins une fois. Exemple : la multiplication de "x" par "y" (le résultat est dans "z");

    z:=0
    u:=y
    repeter
    z:=z+x
    u:=u-1
    jusqu'a u=0

    Là aussi c'est mulet, mais c'est des exemples de base.
Voilà donc ce que l'on pouvait dire sur le Pascal Libre. On va d'ailleurs s'arrêter là pour la première. La prochaine fois on fera risette essentiellement avec les tableaux, donc il y aura plus d'exemples, plus d'action, plus de cascades, plus de sexe.


[Retour en haut] / [Retour aux articles] [Article suivant]