0% ont trouvé ce document utile (0 vote)
115 vues7 pages

TD1 Algorithmique

Le document présente plusieurs exercices sur les structures conditionnelles et répétitives en algorithmique. Les exercices proposent de résoudre des problèmes simples à l'aide d'algorithmes utilisant des instructions conditionnelles et répétitives comme les boucles et les tests. Des solutions détaillées sous forme d'algorithmes sont fournies pour chaque exercice.

Transféré par

allidaoued
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
115 vues7 pages

TD1 Algorithmique

Le document présente plusieurs exercices sur les structures conditionnelles et répétitives en algorithmique. Les exercices proposent de résoudre des problèmes simples à l'aide d'algorithmes utilisant des instructions conditionnelles et répétitives comme les boucles et les tests. Des solutions détaillées sous forme d'algorithmes sont fournies pour chaque exercice.

Transféré par

allidaoued
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Pour aider au choix, il est parfois judicieux de se poser les questions suivantes : Qu’est ce qui
est répété (quelle est la séquence) ?
– Quand est-ce qu’on arrête (ou continue) ?

Si nombre d’itérations connu Alors


Résultat <- Pour
Sinon
Si itération exécutée au moins une fois Alors
Résultat <- Répéter
Sinon
Résultat <- TantQue
FinSi
FinSi

Exercice 1 : Écrire un programme qui demande à l’utilisateur de saisir un caractère et qui affiche
« affirmatif » si le caractère est un « o » (minuscule ou majuscule), « négatif » si c’est un « n »
(minuscule ou majuscule) et « ? ! ? ! ? ! ? » dans les autres cas.

Solution :

Algorithme repondre

Variable

reponse: Caractere -- caractère lu au clavier

Début

saisir le caractère

Écrire("Votre réponse (o/n) : ")

Lire(reponse)

Selon reponse Dans

’o’, ’O’: Écrireln("Affirmatif !")

’n’, ’N’: Écrireln("Négatif !")


TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Sinon

Écrireln("?!?!?!?")

FinSelon

Fin

Exercice 2 : Écrire un programme qui affiche la somme des n premiers entiers naturels, n étant un
entier saisi au clavier. Le programme devra proposer la possibilité à l’utilisateur de recommencer le
calcul pour un autre entier.

Var

n: Entier -- un entier saisi au clavier

s: Entier -- la somme des n premiers entiers

i: Entier -- parcourir les entiers de 1 à n

réponse: Caractère -- réponse lue au clavier

Début

Répéter

Écrire("Valeur de n = ")

Lire(n)

-- calculer la somme des n premiers entiers

s <- 0

i <- 1

TantQue i <= n Faire

s <- s + i

i <- i + 1

FinTQ

-- afficher le résultat

ÉcrireLn("La somme des entiers est : ", s)

-- Demander si l’utilisateur veut recommencer

Écrire("Encore (o/n) ? ")

Lire(réponse)

JusquÀ (réponse = ’n’) Ou (réponse = ’N’)

Fin.
TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Exercice3 :

Un magasin de reprographie facture 2 Dt les dix premières photocopies, 1.500 Dt les vingt suivantes
et 1 Dt au-delà. Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies
effectuées puis affiche le montant correspondant.

Solution

Algorithme Facture ;

Const P1=2 ; P2=1.5 ; P3=1 ;

Var Mont :reel ; Nbc :entier ;

Début

Ecrire(‘Donner le nombre de photocopies’) ;

Lire(Nbc) ;

Si Nbc≤10 Alors Mont←P1*Nbc

Sinon Si Nbc≤30 Alors Mont←P1*10+P2*(Nbc-10)

Sinon Mont←P1*10+P2*20+P3*(Nbc-30)

Fsi

Fsi ;

Ecrire(‘Le montant à payer est: ’,Mont) ;

Fin.

Exercice 4:

Ecrire un algorithme permettant d’afficher la saison en introduisant le numéro du mois.

Solution

Algorithme Saison;

Var M :entier ;

Début Ecrire(‘Donner un numéro de mois 1--12’) ;

Répéter Lire(M) ;

Jusqu’à (M>0 )et( M

selon M faire

3,4,5 : Ecrire(‘La saison est : PRINTEMPS’) ;

6,7,8 : Ecrire(‘La saison est : ETE’) ;

9,10,11 : Ecrire(‘La saison est : AUTOMNE’) ;


TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

12,1,2 : Ecrire(‘La saison est : HIVER’) ;

Finselon ;

Fin

Exercice 5 :

Ecrire un algorithme pour résoudre chacun des problèmes suivants :

1- Calcul de la somme des N premiers nombres entiers.


2- 2- Recherche du minimum et du maximum dans un ensemble de N nombres.
3- 3- Calcul du quotient et reste de la division de deux entiers A et B sans utiliser l’opération de
division.
4- 4- Le calcul du produit de deux entiers en utilisant uniquement l'opération d'addition '+’.
5- 5- Détermination si A est divisible par B. Avec A et B des entiers positifs.
6- 6- Déterminer tous les diviseurs d’un entier X donné.
7- 7- Déterminer si un nombre entier X est premier ou non.
8- 8- Calcule la somme des chiffres qui composent un entier naturel N.

Solutions

1- Algorithme Somme ;
Var I,N,S :entier ;
Début
Ecrire(‘Donner un entier N’) ;
Lire(N) ;
S ←0 ;
Pour I ←1 à N-1 Faire
S ←S+I; Fait ;
Ecrire(‘La somme des’, N,’ premiers nombres est: ’,S) ;
Fin.
2- Algorithme MaxMin;
Var I,N,Max,Min,X :entier ;
Début
Ecrire(‘Donner un entier N>0’) ;
Répéter Lire(N) ;
Jusqu’à N>0 ; /* Lire le premier élément, puis initialiser le Min et le Max à cette valeur
Lire(X) ;
Max←X ;
Min←X ;
Pour I ←2 à N Faire /* lire la suite des éléments et mettre à jour le Min et le Max Lire(X) ;
Si Max<X Alors Max←X
Sinon Si Min>X Min←X
Fsi
Fsi ;
finFaire ;
Ecrire(‘Le Minimun des valeurs est: ’,Min,’ le Maximum est : ‘,Max) ;
TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Fin.
3- Algorithme QuotReste ;
Var A,B,Q,R :entier ;
Début
Ecrire(‘Donner deux entiers A et B’) ;
Lire(A,B) ;
Q ←0 ; R ←A ;
Tantque R>B Faire

Q ←Q+1; R ←R-B;

Fait ;
Ecrire(‘Le Quotient de A/B est : ’,Q, ‘ Le reste de A/Best : ‘,R) ;
Fin.

4- Algorithme Produit ; Var A,B,P,I :entier ; Début Ecrire(‘Donner deux entiers A et B’) ; Lire(A,B)
; Si A=0 ou B=0 Alors P←0 Sinon P←0 ; /*initialiser le produit à 0 Pour I ←1 à B Faire P←P+A ;
Fait Fsi ; Ecrire(‘Le produit A*B est : ’,P) ; Fin. On peut optimiser la solution en choisissant la
boucle ayant le moins d’itérations : Algorithme Produit ; Var A,B,P,I :entier ; Début
Ecrire(‘Donner deux entiers A et B’) ;
Lire(A,B) ; Si A=0 ou B=0 Alors P←0 Sinon Si A>B Alors P←A ; /*On peut initialiser le produit à
A et commencer la boucle à 2 Pour I ←2 à B Faire P←P+A ; Fait Sinon P←B ; Pour I ←2 à A
Faire P←P+B ; Fait Fsi ; Ecrire(‘Le produit A*B est : ’,P) ; Fin.

5- Algorithme AdivB; Var A,B,R :entier ; Début Ecrire(‘Donner deux entiers positifs A,B’) ;
Répéter Lire(A,B) ; Jusqu’à A>0 et B>0 ; R←A ; Tantque R≥0 Faire R ←R-B; Fait ; Si R=0Alors
Ecrire(A,’ est divisible par ‘,B) Sinon Ecrire(A,’ est n’’est pas divisible par ‘,B) Fsi ; Fin.
6- 6- Algorithme Diviseurs ; Var X,M,I :entier ; Début Ecrire(‘Donner un entier X’) ; Lire(X) ;
Ecrire(‘Les diviseurs de ‘,X,’ sont :’) ; /*On boucle de 1 à la moitié de X, car après la moitié il
n’y a plus de diviseur sauf X /*On peut utiliser la fonction division entière DIV et la fonction
reste de cette division MOD M←X DIV 2 ; Pour I ←1 à M Faire Si X MOD I=0 Alors Ecrire(I) Fsi;
Fait ;
Ecrire(X) ; Fin.
7- Algorithme Premier;
Var
X,M,I :entier ;
Pr :booléen ;
Début
Ecrire(‘Donner un entier X’) ;
Lire(X) ; /*X est premier s’il a deux diviseurs distincts 1 et lui-même, attention 1 n’est pas
premier.
Pr←Vrai ;
Si X=1 Alors
Pr←Faux
Sinon
M←X DIV 2 ;
I ←2 ;
Tantque I ≤ M et Pr Faire /*si on trouve un diviseur on arrête la boucle
Si X MOD I=0 Alors
TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Pr←Faux
Fsi;
I ←I+1 ;
Fait
Fsi ;
Si Pr Alors
Ecrire(X,’ est premier’)
Sinon Ecrire(X,’ n’’est pas premier’)
Fsi;
Fin.
8- Algorithme SommeChiff; Var N,S,R :entier ; Début Ecrire(‘Donner un entier naturel N’) ;
Répéter Lire(N) ; Jusqu’à N≥0 ; S←0 ; R←0 ; Tantque R>0 Faire S←S+R MOD 10; R← R DIV 10;
Fait ; Ecrire(‘La somme des chiffres qui composent ’,N,’ est :’,S) ; Fin

Exercice 6 :

Ecrire un algorithme qui permet à l’utilisateur de saisir une suite caractère se terminant par ‘*’, et qui
affiche à la fin le nombre d’apparition de la lettre ‘A’.

Solution 1 : en utilisant une boucle Répéter

Algorithme Apparition ;

Var

ch :caractère ;

NbA :entier ;

Début

NbA ←0 ;

Répéter Lire(ch) ;

Si ch=’A’ Alors

NbA ←NbA+1 Fsi ;

Jusqu’à ch=’*’ ;

Ecrire(‘Nombre apparition de A est :’,NbA) ;

Fin

Solution 2 : en utilisant une boucle Tantque +Initialisation

Algorithme Appatition ;

Var ch :caractère ;

NbA :entier ;

Début

NbA ←0 ;

Ch ←’ ’ ; /* Initialiser Ch à un caractère autre que ‘*’


TD1 STRUCTURES CONDITIONNELLES ET REPETITIVES

Tanque ch<>’*’ Faire

Lire(ch) ; /* la lecture se fait avant le traitement

Si ch=’A’ Alors

NbA ←NbA+1

Fsi ; Fait ;

Ecrire(‘Nombre apparition de A est :’,NbA) ;

Fin.

Solution 3 : en utilisant une boucle Tantque + Lecture avant la boucle Algorithme Appatition ;

Var

ch :caractère ;

NbA :entier ;

Début NbA ←0 ;

Lire(ch) ; /* lecture la première valeur de ch avant la boucle

Tanque ch<>’*’ Faire

Si ch=’A’ Alors

NbA ←NbA+1

Fsi ;

Lire(ch) ; /* La lecture suivante se fait après le traitement

Fintantque ;

Ecrire(‘Nombre apparition de A est :’,NbA) ; Fin.

Vous aimerez peut-être aussi