Pages

Ads 468x60px

vendredi 4 novembre 2011

Contrôle : travail à rendre


Contrôle à Rendre le lundi 17/11
Exercice 0
Ecrire un programme qui  échange la valeur de deux variables. Exemple, si
a = 2 et b = 5, le programme donnera a = 5 et b = 2.


Exercice 1
Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule
et affiche le carr´e de ce nombre.


Exercice 2
Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et
le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en
sorte que des libellés apparaissent clairement.


Exercice 3
Ecrire un algorithme qui demande deux nombres `a l’utilisateur et l’informe
ensuite si leur produit est négatif ou positif (on laisse de coté  le cas o`u le
produit est nul). Attention toutefois : on ne doit pas calculer le produit des
deux nombres.


Exercice 4
Ecrire un algorithme qui demande l’âge d’un enfant `a l’utilisateur. Ensuite,
il l’informe de sa cat´egorie :


* ”Poussin” de 6 `a 7 ans
”Pupille” de 8 `a 9 ans
”Minime” de 10 `a 11 ans
”Cadet” apr`es 12 an



Exercice 5
Ecrire un algorithme qui demande un nombre compris entre 10 et 20,
jusqu’`a ce que la réponse convienne. En cas de réponse supérieure `a 20, on
fera apparaitre un message : Plus petit ! , et inversement, Plus grand ! si
le nombre est inf´erieur `a 10


Exercice 6
Ecrire un algorithme qui demande un nombre de d´epart, et qui calcule la
somme des entiers jusqu’`a ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15 NB : on souhaite afficher
uniquement le r´esultat, pas la d´ecomposition du calcul.

Exercice 9

écrivez un algorithme permettant, `a l’utilisateur de saisir les notes d’une
classe. Le programme, une fois la saisie terminée, renvoie le nombre de ces
notes supérieures `a la moyenne de la classe.

Exercice 10

Écrire une fonction qui recherche la valeur minimum d'un tableau d'entier et revoie son indice comme valeur
de retour.

Exercice 11

Écrire une fonction qui renverse un tableau (la première valeur devient la dernière, la deuxième l'avant der-
nière, etc). Par exemple, si le tableau est trié en ordre croissant au début de la fonction il doit être trié en ordre décroissant par l'algorithme.

Exercice 12

Un palindrome est un tableau de caractères qui se lit de la même façon dans les deux sens (ex : « elle »,
« radar », « laval »). La fonction doit renvoyer 1 si le tableau est un palindrome et 0 sinon.
1. Écrire une fonction qui dit si un tableau est un palindrome






Exercice 14

1. Ecrire un algorithme qui calcule la somme de tous les entiers pairs d’un tableau d’entiers.
2. Ecrire un algorithme qui parcourt un tableau d’entiers et indique combien de fois un entier est immediatement suivi d’un nombre strictement inferieur.


Exercice 15

Écrivez la fonction qui calcule le volume d’une sphère étant donné son rayon
V =43πR3
Prototype : double volume_sphere(double rayon) ;




Exercice 16
Écrire une fonction qui retourne le plus grand commun diviseur (pgcd ) de deux nombres entiers positifs
par l’algorithme d’Euclide


Exercice 17
Écrivez la fonction qui convertit les kilomètres en miles (1 mile = 1,609 km)
Prototype : double km_vers_mile(double km) ;
Exercice 18

Écrire un algorithme qui calcule le reste de la division entière d'un nombre A par un nombre B
et a che sa valeur. A et B sont saisis par l'utilisateur. Vous n'utiliserez pas l'opérateur % pour le
calcul du reste.



Exercice 19


Écrire un algorithme qui à partir d'une somme d'argent donnée, la décompose en un nombre
minimal de billets de 20, 10 et 5 Euros et 50, 20, 10, 5, 2 et 1 centimes d'Euros. La somme initiale
sera saisie par l'utilisateur.

Exercice 20

Dans une entreprise, le calcul des jours de congés payés s'e ectue de la manière suivante :
Si une personne est entrée dans l'entreprise depuis moins d'un an, elle a droit à deux jours
de congés par mois de présence, sinon 28 jours au moins.
Si c'est un cadre et s'il est agé d'au moins 35 ans et si son ancienneté est supérieure à 3 ans,
il lui est accordé 2 jours supplémentaires.
S'il est agé d'au moins 45 ans et si son ancienneté est supérieure à 5 ans, il lui est accordé 4
jours supplémentaires.
Écrire un algorithme qui calcule le nombre de jours de congés à partir de l'âge, l'ancienneté et
l'appartenance au collège cadre d'un employé

Exercice 21

Pour 'N' saisi au clavier, a cher les N premiers nombres impairs positifs. Vous écrirez un algorithme utilisant une boucle dé nie ("Pour"), et également deux versions traitant le même problème
utilisant respectivement une boucle indé nie "Tant Que" et "Répéter ... Jusqu'à".

Exercice 22

Écrire un algorithme qui a che le nombre de digits à '1' d'un nombre entier (Base 10) lorqu'il est
représenté sous son format binaire (Base 2).

Exercice 23

Écrire un algorithme qui, à partir d'un nombre entier strictement positif, a chera VRAI ou
FAUX selon que le nombre est premier ou non. Pour mémoire, les nombres premiers inférieurs à
100 sont : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97.

Exercice 24

On considère un tableau T contenant déjà des éléments de type entier.
a) Écrire un algorithme de recherche séquentielle d'un élément dans un tableau.
b) Supposons que le tableau initial est trié dans l'ordre croissant, l'algorithme de recherche
d'un élément (si il existe) devra tirer partie de cette spéci cité. Vous utiliserez une approche
dichotomique.


Exercice 25 Insertion d'éléments
On considère un tableau T préalablement trié. Écrire un algorithme permettant d'insérer un
élément dans T. T doit bien entendu resté trié. On suppose qu'il existe une case vide à la n
du tableau.

Exercice 26 Fusion de tableaux
On considère 2 tableaux de 100 éléments T1 et T2. Réaliser dans un tableau T3 une fusion de ces
2 tableaux. Réécrivez cet algorithme en prenant en compte cette fois la suppression des doublons.













jeudi 3 novembre 2011



Algorithmes :Partie 6 Corrigés des Exercices


Partie 6
Corrigés des Exercices
Exercice 6.1
Tableau Truc(6) en Numérique
Variable i en Numérique
Debut
Pour i ← 0 à 6
  Truc(i) ← 0
Suivant
Fin


Exercice 6.2
Tableau Truc(5) en Caractère
Debut
Truc(0) ← "a"
Truc(1) ← "e"
Truc(2) ← "i"
Truc(3) ← "o"
Truc(4) ← "u"
Truc(5) ← "y"
Fin


Exercice 6.3
Tableau Notes(8) en Numérique
Variable i en Numérique
Pour i ← 0 à 8
  Ecrire "Entrez la note numéro ", i + 1
  Lire Notes(i)
Suivant
Fin


Exercice 6.4
Cet algorithme remplit un tableau avec six valeurs : 0, 1, 4, 9, 16, 25.
Il les écrit ensuite à l’écran. Simplification :
Tableau Nb(5) en Numérique
Variable i en Numérique
Début
Pour i ← 0 à 5
  Nb(i) ← i * i
  Ecrire Nb(i)
Suivant
Fin


Exercice 6.5
Cet algorithme remplit un tableau avec les sept valeurs : 1, 3, 5, 7, 9, 11, 13.
Il les écrit ensuite à l’écran. Simplification :
Tableau N(6) en Numérique
Variables i, k en Numérique
Début
N(0) ← 1
Ecrire N(0)
Pour k ← 1 à 6
  N(k) ← N(k-1) + 2
  Ecrire N(k)
Suivant
Fin


Exercice 6.6
Cet algorithme remplit un tableau de 8 valeurs : 1, 1, 2, 3, 5, 8, 13, 21


Exercice 6.7
Variable S en Numérique
Tableau Notes(8) en Numérique
Debut
s ← 0
Pour i ← 0 à 8
  Ecrire "Entrez la note n° ", i + 1
  Lire Notes(i)
  s ← s + Notes(i)
Suivant
Ecrire "Moyenne :", s/9
Fin


Exercice 6.8
Variables Nb, Nbpos, Nbneg en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de valeurs :"
Lire Nb
Redim T(Nb-1)
Nbpos ← 0
Nbneg ← 0
Pour i ← 0 à Nb - 1
  Ecrire "Entrez le nombre n° ", i + 1
  Lire T(i)
  Si T(i) > 0 alors
    Nbpos ← Nbpos + 1
  Sinon
    Nbneg ← Nbneg + 1
  Finsi
Suivant
Ecrire "Nombre de valeurs positives : ", Nbpos
Ecrire "Nombre de valeurs négatives : ", Nbneg
Fin


Exercice 6.9
Variables i, Som, N en Numérique
Tableau T() en Numérique
Debut
… (on ne programme pas la saisie du tableau, dont on suppose qu’il compte N éléments)
Redim T(N-1)

Som ← 0
Pour i ← 0 à N - 1
  Som ← Som + T(i)
Suivant
Ecrire "Somme des éléments du tableau : ", Som
Fin
Exercice 6.10
Variables i, N en Numérique
Tableaux T1(), T2(), T3() en Numérique
Debut
… (on suppose que T1 et T2 comptent N éléments, et qu’ils sont déjà saisis)
Redim T3(N-1)

Pour i ← 0 à N - 1
  T3(i) ← T1(i) + T2(i)
Suivant
Fin


Exercice 6.11
Variables i, j, N1, N2, S en Numérique
Tableaux T1(), T2() en Numérique
Debut
… On ne programme pas la saisie des tableaux T1 et T2.
On suppose que T1 possède N1 éléments, et que T2 en possède T2)

S ← 0
Pour i ← 0 à N1 – 1
  Pour j ← 0 à N2 – 1
    S ← S + T1(i) * T2(j)
  j Suivant
Suivant
Ecrire "Le schtroumpf est : ", S
Fin
Exercice 6.12
Variables Nb, i en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de valeurs : "
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
  Ecrire "Entrez le nombre n° ", i + 1
  Lire T(i)
Suivant
Ecrire "Nouveau tableau : "
Pour i ← 0 à Nb – 1
  T(i) ← T(i) + 1
  Ecrire T(i)
Suivant
Fin


Exercice 6.13
Variables Nb, Posmaxi en Numérique
Tableau T() en Numérique
Ecrire "Entrez le nombre de valeurs :"
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
  Ecrire "Entrez le nombre n° ", i + 1
  Lire T(i)
Suivant
Posmaxi ← 0
Pour i ← 0 à Nb - 1
  Si T(i) > T(Posmaxi) alors
    Posmaxi ← i
  Finsi
Suivant
Ecrire "Element le plus grand : ", T(Posmaxi)
Ecrire "Position de cet élément : ", Posmaxi
Fin


Exercice 6.14
Variables Nb, i, Som, Moy, Nbsup en Numérique
Tableau T() en Numérique
Debut
Ecrire "Entrez le nombre de notes à saisir : "
Lire Nb
Redim T(Nb-1)
Pour i ← 0 à Nb - 1
  Ecrire "Entrez le nombre n° ", i + 1
  Lire T(i)
Suivant
Som ← 0
Pour i ← 0 à Nb - 1
  Som ← Som + T(i)
Suivant
Moy ← Som / Nb
NbSup ← 0
Pour i ← 0 à Nb - 1
  Si T(i) > Moy Alors
    NbSup ← NbSup + 1
  FinSi
Suivant
Ecrire NbSup, " élèves dépassent la moyenne de la classe"
Fin

Algorithmes PARTIE 6 Enonce des Exercices


PARTIE 6
Enonce des Exercices
Exercice 6.1
Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant toutes à zéro.


Exercice 6.2
Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de l’alphabet latin.


Exercice 6.3
Ecrire un algorithme qui déclare un tableau de 9 notes, dont on fait ensuite saisir les valeurs par l’utilisateur.


Exercice 6.4
Que produit l’algorithme suivant ?
Tableau Nb(5) en Entier
Variable i en Entier
Début
Pour i ← 0 à 5
  Nb(i) ← i * i
suivant
Pour i ← 0 à 5
  Ecrire Nb(i)
suivant
Fin
Peut-on simplifier cet algorithme avec le même résultat ?


Exercice 6.5
Que produit l’algorithme suivant ?
Tableau N(6) en Entier
Variables i, k en Entier
Début
N(0) ← 1
Pour k ← 1 à 6
  N(k) ← N(k-1) + 2
Suivant
Pour i ← 0 à 6
  Ecrire N(i)
suivant
Fin
Peut-on simplifier cet algorithme avec le même résultat ?


Exercice 6.6
Que produit l’algorithme suivant ?
Tableau Suite(7) en Entier
Variable i en Entier
Début
Suite(0) ← 1
Suite(1) ← 1
Pour i ← 2 à 7
  Suite(i) ← Suite(i-1) + Suite(i-2)
suivant
Pour i ← 0 à 7
  Ecrire Suite(i)
suivant
Fin


Exercice 6.7
Ecrivez la fin de l’algorithme 6.3 afin que le calcul de la moyenne des notes soit effectué et affiché à l’écran.


Exercice 6.8
Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le programme affichera le nombre de valeurs négatives et le nombre de valeurs positives.
Exercice 6.9
Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le tableau a été préalablement saisi).


Exercice 6.10
Ecrivez un algorithme constituant un tableau, à partir de deux tableaux de même longueur préalablement saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.
Tableau 1 :
48791546

Tableau 2 :
76521374

Tableau à constituer :
11141211281110



Exercice 6.11
Toujours à partir de deux tableaux précédemment saisis, écrivez un algorithme qui calcule le schtroumpf des deux tableaux. Pour calculer le schtroumpf, il faut multiplier chaque élément du tableau 1 par chaque élément du tableau 2, et additionner le tout. Par exemple si l'on a :
Tableau 1 :
48712

Tableau 2 :
36

Le Schtroumpf sera :
3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279


Exercice 6.12
Ecrivez un algorithme qui permette la saisie d’un nombre quelconque de valeurs, sur le principe de l’ex 6.8. Toutes les valeurs doivent être ensuite augmentées de 1, et le nouveau tableau sera affiché à l’écran.


Exercice 6.13
Ecrivez un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un nombre déterminé de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en précisant quelle position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un premier temps, et la recherche de la plus grande valeur du tableau dans un second temps.


Exercice 6.14
Toujours et encore sur le même principe, écrivez un algorithme permettant, à l’utilisateur de saisir les notes d'une classe. Le programme, une fois la saisie terminée, renvoie le nombre de ces notes supérieures à la moyenne de la classe.

6. Les Tableaux algorithmique Tableaux dynamiques


3. Tableaux dynamiques
Il arrive fréquemment que l’on ne connaisse pas à l’avance le nombre d’éléments que devra comporter un tableau. Bien sûr, une solution consisterait à déclarer un tableau gigantesque (10 000 éléments, pourquoi pas, au diable les varices) pour être sûr que « ça rentre ». Mais d’une part, on n’en sera jamais parfaitement sûr, d’autre part, en raison de l’immensité de la place mémoire réservée – et la plupart du temps non utilisée, c’est un gâchis préjudiciable à la rapidité, voire à la viabilité, de notre algorithme.
Aussi, pour parer à ce genre de situation, a-t-on la possibilité de déclarer le tableau sans préciser au départ son nombre d’éléments. Ce n’est que dans un second temps, au cours du programme, que l’on va fixer ce nombre via une instruction de redimensionnement : Redim.
Notez que tant qu’on n’a pas précisé le nombre d’éléments d’un tableau, d’une manière ou d’une autre, ce tableau est inutilisable.
Exemple : on veut faire saisir des notes pour un calcul de moyenne, mais on ne sait pas combien il y aura de notes à saisir. Le début de l’algorithme sera quelque chose du genre :
Tableau Notes() en Numérique
Variable nb en Numérique
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb
Redim Notes(nb-1)
Cette technique n’a rien de sorcier, mais elle fait partie de l’arsenal de base de la programmation en gestion.

6. Les Tableaux Utilité des tableaux Notation et utilisation algorithmique Tableaux dynamiques


Partie 6
Les Tableaux
« Si on ment à un compilateur, il prendra sa revanche. » - Henry Spencer.

Bonne nouvelle ! Je vous avais annoncé qu’il y a avait en tout et pour tout quatre structures logiques dans la programmation. Eh bien, ça y est, on les a toutes passées en revue.
Mauvaise nouvelle, il vous reste tout de même quelques petites choses à apprendre…
1. Utilité des tableaux
Imaginons que dans un programme, nous ayons besoin simultanément de 12 valeurs (par exemple, des notes pour calculer une moyenne). Evidemment, la seule solution dont nous disposons à l’heure actuelle consiste à déclarer douze variables, appelées par exemple Notea, Noteb, Notec, etc. Bien sûr, on peut opter pour une notation un peu simplifiée, par exemple N1, N2, N3, etc. Mais cela ne change pas fondamentalement notre problème, car arrivé au calcul, et après une succession de douze instructions « Lire » distinctes, cela donnera obligatoirement une atrocité du genre :
Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
Ouf ! C’est tout de même bigrement laborieux. Et pour un peu que nous soyons dans un programme de gestion avec quelques centaines ou quelques milliers de valeurs à traiter, alors là c’est le suicide direct.
Cerise sur le gâteau, si en plus on est dans une situation on l’on ne peut pas savoir d’avance combien il y aura de valeurs à traiter, là on est carrément cuits.
C’est pourquoi la programmation nous permet de rassembler toutes ces variables en une seule, au sein de laquelle chaque valeur sera désignée par un numéro. En bon français, cela donnerait donc quelque chose du genre « la note numéro 1 », « la note numéro 2 », « la note numéro 8 ». C’est largement plus pratique, vous vous en doutez.
Un ensemble de valeurs portant le même nom de variable et repérées par un nombre, s’appelle un tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle – ô surprise – l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de l’indice de l’élément, entre parenthèses.

Retour Haut de Page
2. Notation et utilisation algorithmique
Dans notre exemple, nous créerons donc un tableau appelé Note. Chaque note individuelle (chaque élément du tableau Note) sera donc désignée Note(0), Note(1), etc. Eh oui, attention, les indices des tableaux commencent généralement à 0, et non à 1.
Un tableau doit être déclaré comme tel, en précisant le nombre et le type de valeurs qu’il contiendra (la déclaration des tableaux est susceptible de varier d'un langage à l'autre. Certains langages réclament le nombre d'éléments, d'autre le plus grand indice... C'est donc une affaire de conventions).
En nous calquant sur les choix les plus fréquents dans les langages de programmations, nous déciderons ici arbitrairement et une bonne fois pour toutes que :
  • les "cases" sont numérotées à partir de zéro, autrement dit que le plus petit indice est zéro.
  • lors de la déclaration d'un tableau, on précise la plus grande valeur de l'indice (différente, donc, du nombre de cases du tableau, puisque si on veut 12 emplacements, le plus grand indice sera 11). Au début, ça déroute, mais vous verrez, avec le temps, on se fait à tout, même au pire.
Tableau Note(11) en Entier
On peut créer des tableaux contenant des variables de tous types : tableaux de numériques, bien sûr, mais aussi tableaux de caractères, tableaux de booléens, tableaux de tout ce qui existe dans un langage donné comme type de variables. Par contre, hormis dans quelques rares langages, on ne peut pas faire un mixage de types différents de valeurs au sein d’un même tableau.
L’énorme avantage des tableaux, c’est qu’on va pouvoir les traiter en faisant des boucles. Par exemple, pour effectuer notre calcul de moyenne, cela donnera par exemple :
Tableau Note(11) en Numérique
Variables Moy, Som en Numérique
Début
Pour i ← 0 à 11
  Ecrire "Entrez la note n°", i
  Lire Note(i)
Suivant
Som ← 0
Pour i ← 0 à 11
  Som ← Som + Note(i)
Suivant
Moy ← Som / 12
Fin
NB : On a fait deux boucles successives pour plus de lisibilité, mais on aurait tout aussi bien pu n’en écrire qu’une seule dans laquelle on aurait tout fait d’un seul coup.
Remarque générale : l’indice qui sert à désigner les éléments d’un tableau peut être exprimé directement comme un nombre en clair, mais il peut être aussi une variable, ou une expression calculée.
Dans un tableau, la valeur d’un indice doit toujours :
  • être égale au moins à 0 (dans quelques rares langages, le premier élément d’un tableau porte l’indice 1). Mais comme je l'ai déjà écrit plus haut, nous avons choisi ici de commencer la numérotation des indices à zéro, comme c’est le cas en langage C et en Visual Basic. Donc attention, Truc(6) est le septième élément du tableau Truc !
  • être un nombre entier Quel que soit le langage, l’élément Truc(3,1416) n’existe jamais.
  • être inférieure ou égale au nombre d’éléments du tableau (moins 1, si l’on commence la numérotation à zéro). Si le tableau Bidule a été déclaré comme ayant 25 éléments, la présence dans une ligne, sous une forme ou sous une autre, de Bidule(32) déclenchera automatiquement une erreur.
Je le re-re-répète, si l’on est dans un langage où les indices commencent à zéro, il faut en tenir compte à la déclaration :
Tableau Note(13) en Numérique
...créera un tableau de 14 éléments, le plus petit indice étant 0 et le plus grand 13.
LE GAG DE LA JOURNEE
Il consiste à confondre, dans sa tête et / ou dans un algorithme, l’indice d’un élément d’un tableau avec le contenu de cet élément. La troisième maison de la rue n’a pas forcément trois habitants, et la vingtième vingt habitants. En notation algorithmique, il n’y a aucun rapport entre i et truc(i).
Holà, Tavernier, prépare la cervoise !