Prmt For imbriqués
program for01 ; const N = 6 ; var k , j : Byte ; begin for k := 1 to N do for j := 1 to N do write(k,'-',j,' ') {od} ; writeLn end {od} end. 1-1 1-2 1-3 1-4 1-5 1-6 2-1 2-2 2-3 2-4 2-5 2-6 3-1 3-2 3-3 3-4 3-5 3-6 4-1 4-2 4-3 4-4 4-5 4-6 5-1 5-2 5-3 5-4 5-5 5-6 6-1 6-2 6-3 6-4 6-5 6-6
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du carré d’étoiles à afficher, lit cette donnée et affiche le carré correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
program for02 ; var k ,j ,nbLn : Byte ; begin write('entrez le nbre de ligne(s) : ') ; readLn(nbLn) ; while nbLn > 0 do // affichage du carré for k := 1 to nbLn do for j := 1 to nbLn do write('*') {od} ; writeLn end {od} ; {od} end.
program for03 ; var k ,j ,nbLn : Byte ; begin {loop}repeat write('entrez le nbre de ligne(s) : ') ; readLn(nbLn) ; {exit}if nbLn = 0 then break ; // affichage du carré for k := 1 to nbLn do for j := 1 to nbLn do write('*') {od} ; writeLn end {od} {pool}until false end. Utilisation de la boucle généralisée
Utilisation d’une procédure program for04 ; procedure afficherCarre(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do begin ; for j := 1 to n do write('*') {od} ; writeLn end {od} end ; var nbLn : Byte ; {loop}repeat write('entrez le nbre de ligne(s) : ') ; readLn(nbLn) ; {exit}if nbLn = 0 then break ; afficherCarre(nbLn) {pool}until false end. Utilisation d’une procédure On définit une nouvelle commande : afficherCarre
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du carré à afficher, lit cette donnée et affiche le carré correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
procedure afficherCarre(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do write('*') {od} ; writeLn ; for k := 2 to n-1 do write('*') ; for j := 2 to n-1 do write(' ') {od} ; writeLn('*') end {od} ; writeLn end ; 1ère version (le reste du programme est inchangé…) Problème pour n = 1 ?
if (k=1)OR(k=n)0R(j=1)OR(j=n) then write('*') else write(' ') {fi}
procedure afficherCarre(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k=1)OR(k=n)OR(j=1)OR(j=n) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ; 2ème version
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre impair de lignes de la figure à afficher, lit cette donnée et affiche la figure (un X) correspondante (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
program for07 ; procedure afficherX(n : Byte) ; var k, j : Byte ; begin //…. end ; var nbLn : Byte ; {loop}repeat repeat write('entrez le nbre impair de ligne(s) ou 0 : ') ; readLn(nbLn) until (nbLn MOD 2 = 1)OR(nbLn = 0) ; {exit}if nbLn = 0 then break ; afficherX(nbLn) {pool}until false end.
procedure afficherX(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k=j)OR(k+j=n+1) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du triangle rectangle d’étoiles à afficher, lit cette donnée et affiche le triangle correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
program for08 ; procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k>=j) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ; var nbLn : Byte ; {loop}repeat write('entrez le nbre de ligne(s) : ') ; readLn(nbLn) ; {exit}if nbLn = 0 then break ; afficherTriangle(nbLn) ; {pool}until false end.
procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to k do write('*') {od} ; writeLn end {od} end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du triangle rectangle d’étoiles à afficher, lit cette donnée et affiche le triangle correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
Une première version… procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k<=j) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ;
Une deuxième version… procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to k-1 do write(' ') {od} ; for j := 1 to n+1-k do write('*') {od} ; writeLn end {od} end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du triangle rectangle d’étoiles à afficher, lit cette donnée et affiche le triangle correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
Une première version… procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := k to n do write('*') {od} ; writeLn end {od} end ;
Une deuxième version… procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k+j<=n+1) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du triangle rectangle d’étoiles à afficher, lit cette donnée et affiche le triangle correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
procedure afficherTriangle(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if (k+j>=n+1) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre de lignes du triangle à afficher, lit cette donnée et affiche le triangle correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
procedure afficherTriangle(nbLn : Byte) ; var k, j : Byte ; begin for k := 1 to nbLn do for j := 1 to (nbLn-k) do write(' ') ; for j := 1 to (2*k-1) do write('*') ; writeLn end end ;
procedure afficherTriangle(nbLn : Byte) ; var k, j : Byte ; begin for k := 1 to nbLn do for j := 1 to (2*nbLn - 1) do if (j >= nbLn-k+1)and(j <= nbLn+k-1) then write('*') else write(' ') {fi} {od} ; writeLn end end ;
Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Ecrire une petite application Pascal qui, de manière répétitive, demande à l'utilisateur d'entrer le nombre (impair) de lignes du papillon à afficher, lit cette donnée et affiche le papillon correspondant (cfr. exemple). Instructions d’affichage : write(‘*’), write(‘ ‘) et writeLn. Respectez les principes de bonne programmation ! Exemple d'exécution :
UNION
procedure afficherPapillon(n : Byte) ; var k, j : Byte ; begin for k := 1 to n do for j := 1 to n do if ((k>=j)and(k+j<=n+1))or((k<=j)and(k+j>=n+1)) then write('*') else write(' ') {fi} {od} ; writeLn end {od} end ;