with Gada.Text_IO ; procedure Mission1 is package Txt renames GAda.Text_IO ; procedure Tracer_Ligne (Long : Integer) is begin -- Tracer n fois le caractère # puis passer à la ligne. for Colonne in 1..Long loop Txt.Put("#") ; end loop ; Txt.New_Line ; end Tracer_Ligne ; procedure Tracer_Rectangle (Largeur : Integer ; Hauteur : Integer) is begin -- Première ligne, pleine Tracer_Ligne(Largeur) ; -- Les lignes suivantes (de 2 à Hauteur-1) ne contiennent que -- le caractère # du début et celui de la fin. for Ligne in 2..Hauteur - 1 loop Txt.Put("#") ; -- Des espaces au milieu. for Col in 2..Largeur - 1 loop Txt.Put(" ") ; end loop ; Txt.Put("#") ; Txt.New_Line ; end loop ; -- La dernière ligne est pleine. Tracer_Ligne(Largeur) ; Txt.New_Line ; end Tracer_Rectangle ; procedure Tracer_Quadrillage (Largeur : Integer ; Hauteur : Integer) is begin -- On dessine ligne par ligne, colonne par colonne. for Ligne in 1..Hauteur loop for Col in 1..Largeur loop -- Il suffit de tracer les lignes impaires et les colonnes impaires. if (Ligne mod 2 = 1) or (Col mod 2 = 1) then Txt.Put("#") ; else Txt.Put(" ") ; end if ; end loop ; Txt.New_Line ; end loop ; Txt.New_Line ; end Tracer_Quadrillage ; procedure Tracer_Damier (Largeur : Integer ; Hauteur : Integer) is begin -- Même principe que Tester_Quadrillage for Ligne in 1..Hauteur loop for Col in 1..Largeur loop -- Il suffit de tracer les cases telles que x+y est pair. if (Ligne + Col) mod 2 = 0 then Txt.Put("#") ; else Txt.Put(" ") ; end if ; end loop ; Txt.New_Line ; end loop ; Txt.New_Line ; end Tracer_Damier ; procedure Tracer_Gros_Damier (Largeur : Integer ; Hauteur : Integer) is begin -- Même principe, mais en divisant les coordonnées par 2 pour faire des paquets de 2x2. for Ligne in 1..Hauteur loop for Col in 1..Largeur loop -- On soustrait 1 car sinon le damier commence au milieu d'un paquet de 2x2 et ce n'est pas joli. if ((Ligne-1)/2 + (Col-1)/2) mod 2 = 1 then Txt.Put("#") ; else Txt.Put(" ") ; end if ; end loop ; Txt.New_Line ; end loop ; Txt.New_Line ; end Tracer_Gros_Damier ; begin Txt.Put_Line("Test de Tracer_Ligne : ") ; Txt.New_Line ; Tracer_Ligne(3) ; Tracer_Ligne(8) ; Tracer_Ligne(20) ; Txt.New_Line ; Txt.Put_Line("Test de Tracer_Rectangle : ") ; Txt.New_Line ; Tracer_Rectangle(5, 5) ; Tracer_Rectangle(14, 2) ; Tracer_Rectangle(4, 6) ; Txt.New_Line ; Txt.Put_Line("Test de Tracer_Quadrillage : ") ; Txt.New_Line ; Tracer_Quadrillage(19, 11) ; Txt.New_Line ; Txt.Put_Line("Test de Tracer_Damier : ") ; Txt.New_Line ; Tracer_Damier(18, 10) ; Txt.New_Line ; Txt.Put_Line("Test de Tracer_Gros_Damier : ") ; Txt.New_Line ; Tracer_Gros_Damier(18, 10) ; end Mission1 ;