Imprimer RebZone
Win32 Linux Mac
Rebol
(c) 2025 RebolZone - http://rebolzone.free.fr
[ Général ]
Accueil
FTP
[ Rebol ]
Présentation
Installation
Rebol/View
Rebsites
[ Coding ]
Coding Tutorial Start
Outils MySql VID FAQ
Syntaxe Download
[ Divers ]
Documentation
Liens Recherche
Ecrivez-nous
Visiteurs
Visteurs
Lundi 26 mai 2025

Tutorial

Valid XHTML 1.0!
Les fonctions
La gestion des erreurs
Le debug

Suivant ...
Précédent ...

Les fonctions


Rebol permet de créer des fonctions :
la syntaxe est nomfonction: func [arguments] [instructions de la fonctions]
L' intruction return permet de mettre fin à la fonction et de renvoyer une valeur.
	
		; définition d'une fonction renvoyant le + petit des 2 nombres
		getMin: func [pnb1 pnb2] 
		[	    
			diff: pnb1 -pnb2 
			if diff < 0 [ return pnb1]
			if diff > 0 [ return pnb2]
			if diff = 0 [ return 0]
		]
		
		; Appel de la fonction
		min: getMin 1251 33
		print min ;renvoi 33
	   
On peut typer les arguments, rajouter un commentaire à la fonction, un libellé aux arguments:
		getMin: func [ "renvoi le + petit nombre" pnb1 [integer!] "1er nombre" pnb2 [integer!] "2eme nombre"]
		[
			diff: pnb1 - pnb2
			if diff < 0 [ return pnb1]
			if diff > 0 [ return pnb2]
			if diff = 0 [ return 0]
	
		]
	  
L'appel de l'aide sur la fonction par help getMin donne :
	  USAGE:
		GETMIN pnb1 pnb2
	  DESCRIPTION:
		renvoi le + petit nombre
		GETMIN is a function value.
	  ARGUMENTS:
		pnb1 -- 1er nombre (Type: integer)
		pnb2 -- 2eme nombre (Type: integer)
		

On peut également ajouter un raffinement :
Exemple, avec /somme :
	  getMin: func [ 
	  "renvoi le + petit nombre" 
	  pnb1 [integer!] "1er nombre" 
	  pnb2 [integer!] "2eme nombre"
	  /somme "Renvoi la somme des 2 nombres"
	  ]
	  [
	  either somme[ return pnb1 + pnb2]
	  [
		diff: pnb1 - pnb2
		if diff < 0 [ return pnb1]
		if diff > 0 [ return pnb2]
		if diff = 0 [ return 0]
	  ]
	  
	   ; Appel de la fonction Avec le raffinement /somme
		b: getMin/somme 108 22 
		print b ; renvoi 130 la somme 
		; Appel de la fonction Sans le raffinement /somme
		b: getMin 108 22 
		print b ; renvoi 22, le + petit 
		

La gestion des erreurs


Rebol founit l'instruction try permettant d'intercepter les erreurs. La syntaxe est : try [block d'instructions]
Try renvoi soit la valeur du block, soit une erreur.

Exemple :
		print try [1 + 2] ; renvoi 3
		print type? try [1 + 2] ; renvoi integer
		print type? try [1 / 0] ; renvoi error (car division par zéro)
		
En combinant un if et l'evaluation de l'erreur error? :
		if error? try [ montant / total ] [ print "erreur de division " ]
		
Autre exemple concernant la lecture d'un fichier, nous allons tester la lecture, quitter le programme si erreur, si ok affichage du contenu du fichier :

	  if error? try [data: read %/c/tmp/logs/appli1.log] 
	  [
		 print "Erreur de lecture du fichier, fin de programme, valider"
		 input
		 quit
	  ]
	  ; La lecture du fichier est Ok : affichage du contenu
	  print data
	

Le debug


Rebol offre plusieurs possibilités pour debugger un script. On peut biensûr utiliser comme dans tout langage, le print universel ...
Rebol permet grâce à l'instruction echo de rediriger la sortie de la console vers un fichier. La syntaxe est :
echo fichier_sortie qui permet d'activer la sortie dans le fichier cité et echo none qui permet de désactiver la sortie. Cela permet d'analyser le cheminement d'un script complexe, d'analyser le contenu des valeurs des variables.

Exemple :
	  rebol[
		Version: 1.1.2
		auteur: "rebolzone"
		date:02-11-2002
		role: "Essai de echo"
		]
		echo %traceprg.log ; on active la sortie dans le fichier traceprg.log
		;début de script
		a: 12345
		b: 123456
		c: a + b
		print c
		print do [a * 3]
		if c > do [a * 3] [print "Supérieur"]
		input
		echo none ; désactivation de la sortie fichier
	   

Dans cet exemple, tous les print seront affichés dans la console Rebol, mais également dans le fichier traceprg.log du répertoire courant. Noter que le nom du fichier est précédé d'un % (type File) et que l'on peut mettre un chemin complet tel que /c/tmp/traceprg.log.


L'instruction ? permet de connaitre la valeur d'une variable et son type :
Exemple :
		FileOut: %/c/tmp/resultats.log
		MaxEnreg: 10000
		? FileOut
		? MaxEnreg
	  
L'affichage sera le suivant :
		 FILEOUT is a file of value: %/c/tmp/resultats.log
		 MAXENREG is an integer of value: 10000
	 
	  
L'instruction probe permet egalement d'afficher toute variable ou objet. Essayer l'exemple suivant dans la console Rebol :

		print system/console
		? system/console
		?? system/console
		probe system/console
	  

L'instruction probe permet de voir dans l'exemple précédent, les différents attributs de l'objet system/console.
Retour début de page