Sie sind auf Seite 1von 8

Licence STIC, Semestre 1 Algorithmique & Programmation 1

Exercices Alexandre Tessier

1 2 3 4 5

Introduction instruction de sortie expressions variable informatique squence dinstructions, trace e


entier a, b a <- 1 b <- a + 1 a <- 3

Exercice 1 Quelles sont les valeurs des variables a et b apr`s excution de la suite dinstructions e e

Exercice 2 Quelles sont les valeurs des variables a, b et c apr`s excution de la suite dinstructions e e entier a, b, c a <- 1 b <- 5 c <- a - b a <- 2 c <- c + a * 2 Exercice 3 Ecrire un algorithme qui change les valeurs de deux variables enti`res x et y, puis ache e e le rsultat. e Exercice 4 Que fait la suite dinstructions entier x <- x y <- x x <- x x + <- 2, y <- 5 y y y

Quel est le rsultat si x et y ont t intialises ` des valeurs a et b quelconques ? e ee e a Exercice 5 Que pensez-vous des algorithmes entier a, b, c a <- 5 c <- a + b b <- 2 entier a, b a <- 5 b <- 2 c <- a + b entier x, y x <- 2.3 y <- 0 x * 2 <- y + 4

Exercice 6 En gnral on donne lheure en heures-minutes-secondes. Supposons quon ait lheure en e e secondes dans une variable enti`re secondes, crire un algorithme qui convertit le nombre de secondes e e en heures-minutes-secondes et ache le rsultat. Par exemple, si secondes vaut 72253 il faut acher e 72253s = 20h 4mn 13s 1

expression dentre e

Exercice 7 Ecrire un algorithme qui demande ` lutilisateur de saisir des valeurs pour trois variables v1, a v2 et v3 de type caract`re, puis permute de faon circulaire vers la droite le contenu des trois variables e c et enn ache les valeurs des trois variables. Par exemple, si v1 vaut a, v2 vaut b et v3 vaut c au dpart alors ` la n v1 vaut c, v2 vaut a et v3 vaut b. e a

programme

Exercice 8 Ecrire un algorithme qui a partir des trois notes et des trois coecients dinfo, math et unit ` e douverture dun tudiant calcule puis ache sa moyenne. e Exercice 9 Ecrire un algorithme qui demande les coordonnes de deux points dans le plan puis calcule e et ache la distance entre les deux points. Exercice 10 Ecrire un algorithme qui a partir dune somme dargent enti`re donne en Euro ache le ` e e nombre minimal de billets de 5 et 10 Euro et pi`ces de 1 et 2 Euro qui font cette somme. e

instruction conditionnelle

Exercice 11 Ecrire un algorithme qui demande deux entiers et ache sils sont gaux ou dirents. e e Exercice 12 Ecrire un algorithme qui demande un entier et ache sil est positif, ngatif ou nul. e Exercice 13 Ecrire un algorithme qui demande deux entiers et les ache en ordre croissant. Mme e chose avec trois entiers. Exercice 14 Ecrire un algorithme qui calcule et ache le maximum et le minimum de deux nombres rels. e Exercice 15 Ecrire un algorithme qui teste si une anne est bissextile. e Exercice 16 Ecrire un algorithme qui pour une date donne, sous la forme jour-mois-anne, ache la e e date du lendemain. Exercice 17 Ecrire un algorithme qui compare deux dates. Exercice 18 Ecrire un algorithme qui demande les coecients a, b et c de lquation ax2 + bx + c = 0 e et ache les solutions.

boucles

Exercice 19 Ecrire un algorithme qui demande deux entiers x et y et calcule xy en nutilisant que des additions et multiplications. Exercice 20 Ecrire un algorithme qui demande un entier positif n et calcule la somme des n premiers entiers : n i. Trouver direntes solutions. e i=0 Modier lalgorithme pour quil calcule la factorielle de n : n !. Exercice 21 Ecrire un algorithme qui demande deux entiers positifs p et q et qui ache tous les couples (x, y) avec x compris entre 1 et p et y compris entre 1 et q. Exercice 22 Ecrire un algorithme qui ache le maximum et le minimum dune liste dentiers positifs. La n de la liste est indique par un entier ngatif. Par exemple, si la liste est 7 2 9 6 1 5 -1 il faut e e acher minimum = 1, maximum = 9. Exercice 23 Ecrire un algorithme qui demande un entier positif et lache ` lenvers. Par exemple, si a lentier est 3524, le programme ache 4253.

Exercice 24 Ecrire un algorithme qui indique si un nombre entier positif est premier. Exercice 25 Ecrire un algorithme qui calcule le pgcd de deux entiers positifs. Exercice 26 Ecrire un algorithme qui demande les notes des 35 tudiants du groupe ache la moyenne, e la meilleure note et la plus mauvaise du groupe.

10

introduction du Java

Exercice 27 Ecrire un programme qui indique si un nombre entier positif est parfait (gal a la somme de e ` ses diviseurs stricts, comme 28 = 1+2+4+7+14). Modier le programme pour acher tous les nombres parfaits entre 1 et 100. Exercice 28 Ecrire un programme qui demande la largeur et la longueur (enti`res) dun rectangle et e ache le rectangle compos du caract`re #. Modier le programme pour nacher que le contour du e e rectangle. Exercice 29 Ecrire un programme pour jouer au jeu du nombre mystrieux. Un entier entre 1 et 100 est e choisi par lordinateur. Le joueur doit trouver ce nombre. Il propose une valeur et lordinateur indique si la proposition est trop grande, trop petite ou si le joueur a gagn. Le joueur a droit ` 10 essais maximum. e a ` A la n de la partie, lordinateur propose de recommencer une nouvelle partie. Si le joueur dcline lore, e lordinateur ache le nombre de parties joues et le nombre de parties gagnes. Lexpression qui permet e e de choisir un nombre alatoire entre 1 et 100 est : e (int) (Math.random () * 100) + 1 Exercice 30 La conjecture de Goldbach arme que tout nombre pair peut scrire comme la somme de e deux nombres premiers. Ecrire un programme qui tant donn un entier positif et pair, donne la liste de toutes les dcompositions e e e de ce nombre comme la somme de deux nombres premiers. Ecrire un programme qui, tant donn un entier n strictement positif, ache la liste des nombres e e pairs vriant la conjecture de Goldbach et compris entre 1 et n. e

11

sous-programme

Exercice 31 Ecrire un sous-programme maximum qui retourne le maximum de deux entiers donns en e param`tre. e Ecrire un programme qui demande deux entiers et ache leur maximum. Ecrire un programme qui demande trois entiers et ache leur maximum. Exercice 32 Donner lachage du programme Sous-programme ssp1 (entier x) Dbut e x <- x + 1 afficher (x) Fin Sous-programme ssp2 (entier x) entier y Dbut e y <- x + 1 afficher (x) Fin Programme P entier x, y Dbut e

x <- 3 y <- 1 ssp1 (x) afficher (x, y) x <- 3 y <- 1 ssp2 (x) afficher (x, y) x <- 3 y <- 1 ssp2 (y) afficher (x, y) Fin Exercice 33 Donner lachage du programme Sous-programme ssp (entier a, entier b) retourne entier entier c Dbut e c <- a + b a <- a + c b <- a + b retourner a + b Fin Programme P entier a <- 3 Dbut e a <- ssp (a, a) afficher (a) Fin

12

mthodes Java e

Exercice 34 Ecrire un sous-programme qui donne le ni`me terme de la suite de bonacci (u0 = 0, u1 = e 1, un+2 = un+1 + un avec 0 n). Ecrire un programme qui demande deux entiers n1 et n2 positifs, puis ache la somme un1 + un2 . Exercice 35 Ecrire un sous-programme factorielle qui retourne la factorielle dun entier donn en e param`tre. e p e e Ecrire un sous-programme c qui retourne la combinaison Cn , n et p entiers donns en param`tre. Ecrire un sous-programme trianglePascal qui a en param`tre un entier k et ache les k premi`res e e lignes du triangle de pascal. Ecrire un programme qui demande un entier k et ache les k premi`res lignes du triangle de pascal. e Tester votre programme avec k = 5, k = 12, k = 15, k = 17. Que remarquez-vous ?

13

tableaux

Exercice 36 Ecrire un programme qui demande les notes des 35 tudiants du groupe, les range dans un e tableau et qui calcule et ache ensuite la moyenne du groupe. Exercice 37 Donner lachage du programme Sous-programme sp1 (entier x) Dbut e x <- 2 Fin

Sous-programme sp2 (entier [] x) Dbut e x [0] <- 3 Fin Programme P entier [] t Dbut e t <- nouveau entier [1] t [0] <- 1 sp1 (t [0]) afficher (t [0]) sp2 (t) afficher (t [0]) Fin Exercice 38 Donner lachage des programmes P1 et P2 : Sous-programme sp (entier [] a, entier [] b) retourne entier Dbut e a [0] <- a [0] * b [0] b [0] <- a [0] * b [0] retourner a [0] Fin Programme P1 entier [] a <- nouveau entier [1] Dbut e a [0] <- 3 afficher (sp (a, a)) Fin Programme P2 entier [] a, b, c Dbut e a <- nouveau entier [3] a [0] <- 5 b <- a c <- nouveau entier [2] b [2] <- 4 c [0] <- 3 b <- c c <- a b [1] <- 2 c [1] <- 1 Pour i de 0 ` a.taille - 1 Faire a afficher (a [i]) FinPour Pour i de 0 ` b.taille - 1 Faire a afficher (b [i]) FinPour Pour i de 0 ` c.taille - 1 Faire a afficher (c [i]) FinPour Fin Exercice 39 On consid`re des tableaux dentiers ` une dimension. Ecrire des sous-programmes et mthodes e a e qui permettent de :

1. saisir les lments dun tableau de taille entiers : ee algo Sous-programme lireTabInt (entier taille) retourne entier [] en Java on crira la mthode : e e java public static int [] lireTabInt (int taille) 2. remplir un tableau avec des valeurs alatoires1 comprise entre des bornes donnes min et max : e e algo Sous-programme remplirTabInt (entier taille, entier min, entier max) retourne entier [] java public static int [] remplirTabInt (int taille, int min, int max) 3. acher le contenu dun tableau : algo Sous-programme afficherTabInt (entier [] tableau) java public static void afficherTabInt (int [] tableau) 4. retourner la valeur maximum dun tableau ; 5. retourner la position de la valeur maximum dun tableau (sil appara plusieurs fois retourner sa t premi`re position dans le tableau) ; e 6. retourner la premi`re position du minimum dun tableau ; e 7. retourner la valeur minimum dun tableau en utilisant le sous-programme prcdent ; e e 8. retourner la moyenne des valeurs dun tableau ; 9. rechercher la prsence dun entier dans un tableau ; e 10. inverser lordre des lments dun tableau en utilisant un second tableau puis sans utiliser dautre ee tableau ; 11. trier un tableau avec dirents algorithmes : tri bulle, tri par insertion, tri par slection ; e e 12. rechercher la prsence dun entier dans un tableau suppos tri ; e e e 13. retourner la position dun entier dans un tableau suppos tri en utilisant une recherche dichotoe e mique, la mthode retourne -1 si llment nest pas dans le tableau. e ee Exercice 40 Fusion de tableaux Ecrire un sous-programme qui ralise la fusion de deux tableaux tris en un tableau tri. Cest-`-dire e e e a que chaque lment des deux premiers tableaux doit se trouver dans le tableau rsultat ; la taille du tableau ee e rsultat est la somme des tailles des deux premiers tableaux. e En utilisant les mthodes de lexercice prcdent, crire un programme qui initialise deux tableaux e e e e dentiers, chacun de taille alatoire comprise entre 10 et 15, avec des valeurs alatoires comprises entre e e 1 et 20. Ensuite le programme doit trier ces deux tableaux puis les fusionner en un troisi`me et enn e acher les trois tableaux. Exercice 41 Crible dEratosth`ne e On dsigne sous le nom de crible dEratosth`ne une mthode de recherche des nombres premiers plus e e e petits quun entier n donn. Pour ceci, on crit la de tous les nombres de 2 ` n, ensuite on rp`te e e liste a e e les oprations suivantes juqu` ce quon atteigne e a n : on souligne le plus petit nombre non soulign e puis on limine de la liste tous les multiples de ce nombre. e En utilisant un tableau de boolen pour reprsenter la liste des entiers, crire un programme qui utilise e e e des sous-programmes pour implanter cette mthode de recherche des nombres premiers. e Exercice 42 Diagramme en btons a Un enseignant veut reprsenter les notes obtenues par ses tudiants sous forme dun diagramme en e e btons. Il souhaite avoir un programme qui, ` partir de la liste des notes de ses tudiants lui donne pour a a e chaque note le nombre dtudiants qui lont obtenue. e Pour crire ce programme on va utiliser 2 tableaux. Le premier de taille 30 contiendra les notes des e 30 tudiants (enti`res et comprises entre 0 et 20). Le second de taille 21 sera tel que la case i contiendra e e le nombre dtudiants ayant obtenu la note i. e Le programme devra remplir alatoirement le tableau de notes puis calculer le second tableau et enn e acher les deux tableaux. Vous pouvez galement dessiner le diagramme a lcran avec des caract`res #. e ` e e Par exemple, si le tableau de notes est
1 Pour la programmation Java vous pourrez utiliser la mthode suivante, qui retourne un entier alatoire compris entre e e deux bornes enti`res donnes (on suppose min max) : e e public static int alatoire (int min, int max) { e return (int) (Math.random () * (max - min + 1)) + min ; }

tudiant e note tudiant e note

0 10 15 9

1 8 16 16

2 16 17 0

3 5 18 7

4 10 19 8

5 14 20 10

6 10 21 19

7 10 22 2

8 8 23 6

9 6 24 12

10 7 25 9

11 12 26 5

12 6 27 10

13 8 28 0

14 10 29 11

alors le programme doit calculer le tableau 0 2 1 0 2 1 3 0 4 0 5 2 6 3 7 2 8 4 9 2 10 7 11 1 12 2 13 0 14 1 15 0 16 2 17 0 18 0 19 1 20 0

et dessiner le diagramme # # # # # # # # # # # # # # # # # # # # # # 7 8 9 1 1 1 1 1 1 1 1 1 1 2 0 1 2 3 4 5 6 7 8 9 0

# # # # # # # # 0 1 2 3 4 5 6

Le programme pourra aussi acher la moyenne des tudiants, la meilleure et la plus mauvaise note... e Exercice 43 Triangle de Pascal p p Dans les feuilles 2 (ex 5) et 3 (ex 5) nous avons calcul les Cn . Il est donc logique de calculer les Cn e n! p dans lexercice 5 de la feuille 4 ! Quand on programme en Java le calcul des Cn par la formule p!(np)! on constate rapidement que les rsultats sont faux car les calculs intermdiaires (comme le calcul de n!) e e dpassent la capacit des entiers Java. e e p e Pour pouvoir calculer les Cn pour des valeurs plus grandes, nous allons utiliser une dnition par n 0 p induction bien fonde de Cn . Pour tout entier n 0 : Cn = Cn = 1 et pour tout entier p tel que e p1 p p 0 < p < n : Cn = Cn1 + Cn1 . Ecrire un programme permettant de calculer, puis dacher les lignes du triangle de Pascal jusqu` a une borne donne. Vous essayerez de nutiliser quun tableau dentiers ` une dimension dont la taille est e a gale au nombre de ligne ` acher, dans lequel sera calcul successivement chaque ligne du triangle. e a e Exercice 44 On consid`re des matrices enti`res n p. Ecrire des sous-programmes ou mthodes qui e e e permettent de : 1. saisir une matrice ; 2. remplir une matrice de valeurs alatoires comprises entre deux bornes donnes ; e e 3. acher une matrice ; 4. calculer le maximum dune matrice ; 5. calculer le minimum dune matrice ; 6. vrier, dans le cas o` n = p, si une matrice est symtrique ; e u e 7. calculer la transpose dune matrice ; e 8. calculer la somme de deux matrices n p ; 9. calculer le produit dun matrice nq par une matrice qp (on peut utiliser une mthode produitScalaire e (m1,m2,l,c) pour calculer le produit scalaire entre les vecteurs forms par la ligne l de la matrice e m1 et la colonne c de la matrice m2). Exercice 45 Ecrire des sous-programmes ou mthodes pour vrier si e e 1. un carr est magique (la somme des valeurs sur chaque ligne, sur chaque colonne et sur les deux e diagonales est la mme) ; e 2. un carr est magique parfait (cest un carr magique qui contient toutes les valeurs de 1 ` n2 ) ; e e a 3. un carr est enchant (la somme des nombres de chaque section de 4 cases formant un carr est la e e e mme) ; e

4. un carr est htrog`ne (les sommes des lments de chaque ligne, de chaque colonne et de chaque e ee e ee diagonale sont direntes mais ne forment pas une suite dentiers conscutifs) ; e e 5. un carr est truqu (deux entiers se touchant orthogonalement ont un facteur commun et deux se e e touchant diagonalement sont premiers entre eux). Exemples de carr magique, carr magique parfait, carr enchant, carr htrog`ne et carr truqu : e e e e e ee e e e 14 15 7 5 17 12 9 19 10 8 3 4 1 5 9 6 7 2 1 14 7 12 8 10 15 11 5 4 2 16 9 13 3 6 1 8 5 7 2 9 4 6 3 10 15 20 14 21 28 22 33 44

Ecrire une mthode qui construit un carr magique parfait dans le cas o` n est impair. e e u Exercice 46 Le jeu de la vie Des cellules disposes sur une surface quadrille voluent dune gnration ` une autre selon les r`gles e e e e e a e suivantes (les voisines dune cellule sont les cellules qui occupent les huit cases touchant la sienne) : si une cellule a 2 ou 3 voisines, elle survit ; si une cellule a moins de 2 voisines, elle meurt de solitude ; si une cellule a plus de 3 voisines, elle meurt dtouement ; e une cellule na dans une case vide si cette case est entoure de prcisement 3 cellules. t e e Par exemple voici 10 gnrations successives de la premi`re conguration : e e e
* *** * * * *** *** * * * *** * *** * * * *** * * * * * * *** * * * 11 ***

* ** *

** *** **

* * * * * *

* ** ** *

*** * * ***

* * * * * * * *

* *** ** ** *** *

*** * * * * * * ***

10

Ecrire un programme qui gn`re alatoirement une population de cellules sur une surface de 20 20 et e e e qui calcule lvolution des 10 gnrations suivantes. Vous nutiliserez quun seul tableau ` trois dimensions. e e e a

14 15

objets sous-programme rcursif e

Das könnte Ihnen auch gefallen