15/09/15 ; page 1 N. Gasiglia Quelques instructions de base Préambule Quand un programme a besoin d échanger des informations avec l utilisateur qui l exécute, ou avec un fichier qui en contient ou dans lequel il doit écrire, la circulation des informations se fait via des flux. Par défaut le flux entrant est le clavier (codé <STDIN>) et le flux sortant est l écran (codé <STDOUT>). Un fichier utilisé comme flux entrant ou sortant n est pas un flux standard. Il doit donc être ouvert avant transfert de données et fermé ensuite comme ceci : ouvrir(nom_du_flux_entrant, "nom_du_fichier_source.txt"); [...] fermer(nom_du_flux_entrant); ouvrir(nom_du_flux_sortant, "nom_du_fichier_cible.txt"); [...] fermer(nom_du_flux_sortant); 1. Opérations élémentaires sur les nombres et les chaînes de Les opérations associent des objets de types déterminés (les opérandes) à un objet de type lui aussi déterminé (appelé résultat ou valeur retournée ). Nous parlons d opérations n-aires s il y a n opérandes. Opération sur le nombre comme sur les chaînes de DES affecter une unaire Variable constante ou variable à gauche, valeur à une valeur type libre à droite (nombre ou variable le plus souvent) lire (read) binaire lire(<flux>) (1) flux d information entrante, celle-ci étant lues et rendues disponibles pour une affectation de la valeur à une variable lire (read) et binaire lire(<flux>, flux d information entrante et affecter la VARIABLE) ou nom de variable, cette dernière valeur à une lire(variable) si se voyant affecter la valeur lue variable le <flux> est sur le flux entrant (comme en <STDIN> combinant les deux opérations précédentes : Variable lire(<flux>) écrire (write) binaire écrire(<flux>, flux d informations sortantes et ccar_ou_nb) ou écrire(ccar_ou_nb) si le <flux> est <STDOUT> valeur mémorisée dans la variable dont le nom figure à gauche du symbole utilisable, par exemple, comme opérande droite d une affectation valeur mémorisée dans la variable écrite à l écran ou dans un fichier cible selon le flux indiqué
15/09/15 ; page 2 N. Gasiglia Opérations classiques sur les nombres [nb] DES auto-incrémentation unaire ++nb nombre nombre auto-décrémentation unaire --nb nombre nombre addition binaire nb1+nb2 nombres nombre soustraction binaire nb1-nb2 nombres nombre multiplication binaire nb1*nb2 nombres nombre division entière binaire nb1/nb2 nombres nombre reste de division (modulo) binaire nb1%nb2 nombres nombre Opérations sur les chaînes de retournant des nombres ou des chaînes de [ccar] Les chaînes de sont toujours écrites entre quotes (guillemets anglais droits) mais elles peuvent être doubles ou simples : doubles (" ") quand on veut profiter des méta (de certains alphabétiques qui, précédés d une barre contre-oblique, ont une valeur spécifique : par exemple, \n pour la marque de fin de ligne ou \t pour la tabulation), et simples (' ') quand on ne veut pas utiliser de méta sauf \ (l apostrophe devra alors être déspécialisée au moyen d une barre contre-oblique), DES longueur (length) unaire longueur(ccar) position [donne la position du 1 er binaire position(ccar1, caractère de ccar2 dans ccar1 si la ccar2) pour seconde est ccar1, et incluse dans la première, 0 sinon] ou caractère isolé pour ccar2 copier (copy) [si position2 est supérieure à la valeur de longeur(ccar), alors copie de position1 jusqu à la fin de ccar}] ternaire copier(ccar, position1, position2) et deux nombres entiers concaténer (concat) binaire concaténer(ccar1, chaînes de ccar2) nombre nombre
15/09/15 ; page 3 N. Gasiglia DES substituer (substitute) [1 e syntaxe : ternaire substituer(ccar1, chaînes de dans ccar1, on substitue aux ccar2, position) pour présents ceux de ccar2 à ccar1 et ccar2, partir de position, et on reprend nombre entier ensuite éventuellement ceux de pour position ccar1 si (position + longueur(ccar2)) < longueur(ccar1)] substituer (substitute) [2 e syntaxe : ternaire substituer(ccar1, chaînes de dans ccar1, on substitue les ccar2, ccar3) pour de ccar2 aux ccar1, ccar2 et présents à partir de ccar3 (de son ccar3 1 er caractère), et on reprend ensuite éventuellement ceux de ccar1 si (position(ccar1, ccar3) + longueur(ccar2)) < longueur(ccar1)] 2. Opérations dont le produit est un : les tests Qu est-ce qu un? Le type est un type primitif, les objets de ce type peuvent prendre la valeur Vrai ou Faux (aussi codée 0 ou 1 en machine). Quand on demande qu un test soit fait, la valeur retournée est de type. Tests sur les nombres DES égalité binaire =(nb1,nb2) nombres non-égalité binaire!=(nb1,nb2) nombres inférieur binaire <(nb1,nb2) nombres inférieur ou égal binaire <=(nb1,nb2) nombres supérieur binaire >(nb1,nb2) nombres supérieur ou égal binaire >=(nb1,nb2) nombres Tests sur les chaînes de Ce sont des tests sur l identité ou sur la précédence alphabétique calculée en fonction des codes de chaque caractère des chaînes de comparées. DES égal (equal) binaire égal(ccar1,ccar2) chaînes de
15/09/15 ; page 4 N. Gasiglia DES non-égal (not equal) binaire non-égal(ccar1,ccar2) chaînes de inférieur (less than) binaire inférieur(ccar1,ccar2) chaînes de inférieur ou égal (less or equal) binaire inférieur-ouégal(ccar1,ccar2) chaînes de supérieur (great than) binaire supérieur(ccar1,ccar2) chaînes de supérieur ou égal (great or equal) binaire superieur-ouegal(ccar1,ccar2) chaînes de sous-chaîne (substring) binaire souschaîne(ccar1,ccar2) chaînes de [appariement d expressions : vrai si ccar2 est une sous- ccar1 ; ccar1 est la traitée (par exemple, la ligne de fichier ouvert comme flux entrant ou <STDIN>) ; ccar2 peut être une expression régulière] Combinaisons de s opération n-aire? Écriture résultat Type(s) opérande(s) Type du résultat et binaire et(bool1, bool2) s ou binaire ou(bool1, bool2) s non unaire (bool) ou non(bool) Non et ou a V F b\a V F b\a V F a F V V V F V V V F F F F V F
15/09/15 ; page 5 N. Gasiglia 3. Actions conditionnelles (tests) Mise en forme schématique des tests Si (condition) condition vérifiée condition non vérifiée alors } sinon } soit : Si(condition) # condition vérifiée alors } #fin du alors # condition non vérifiée sinon } # fin du sinon 4. Boucle Tant que tant_que(condition) # condition vérifiée } # fin du tant_que # condition non vérifiée autres instructions à exécuter après celles de la boucle quand la condition n est plus respectée ou à la place de celles de la boucle si la condition n a jamais été respectée Pour Pour i 1 jusqu à i = valeur avec i++ } # fin du Pour
15/09/15 ; page 6 N. Gasiglia 5. Tableaux simples Posons que nous disposons d un tableau T_dico qui contient 2 cellules : chanter [1] jouer [2] On peut utiliser le contenu d une cellule pour l affecter à une variable par exemple : V_mot T_dico[1] ; On peut affecter une valeur au tableau comme contenu de la cellule dont le numéro est indiqué entre crochets : T_dico[3] rêver ; On peut aussi affecter un contenu complet à un tableau T_dico_nouveau ( chanter, jouer, rêver ) ; Ci-dessus, T_dico et T_dico_nouveau contiennent finalement chanter [1] jouer [2] rêver [3] Mais si nous demandons : T_dico[1] copier cette commande modifie T_dico : copier [1] jouer [2] rêver [3]