Remarque : il peut y avoir plusieurs solutions possibles pour chaque TP. Celle proposée est la meilleure.
Début
Entier carre
carre <- 17 x 17
afficher carre
Fin
Le carré de 100 000 est incohérent. Il dépasse la valeur maximale qui peut être stockée dans une variable de type int.
Début
Réel Pi, D, d, volume
Pi <- 3,1516
D <- 2 x 3,3
d <- 2 x 2
volume <- Pi / 4 x 4,3
volume <- volume x ((D x D) - (d x d))
afficher volume
Fin
Début
Entier adultes, enfants, naissances, total
adultes <- 28
enfants <- 53
naissances <- adultes / 2
adultes <- adultes + enfants
enfants <- naissances
naissances <- adultes / 2
total <- adultes + enfants + naissances
afficher total
Fin
Début
Réel euros, francs
obtenir euros
francs <- euros x 6,55956
afficher francs
Fin
Début
Réel a, b, abs
obtenir a
obtenir b
si (a > b)
abs <- a - b
sinon
abs <- b - a
finsi
afficher abs
Fin
Début
Réel a, b, abs
obtenir a
obtenir b
abs <- a - b
si (abs < 0)
abs <- (- abs)
finsi
afficher abs
Fin
Début
Entier jour, mois
obtenir jour
obtenir mois
si (mois = 9 et jour > 22)
afficher "vous etes balance"
sinon
si (mois = 10 et jour < 23)
afficher "vous etes balance"
sinon
afficher "vous n'etes pas balance"
finsi
finsi
Fin
Début
Entier jour, mois
obtenir jour
obtenir mois
si ( (mois = 9 et jour > 22) ou (mois = 10 et jour < 23) )
afficher "vous etes balance"
sinon
afficher "vous n'etes pas balance"
finsi
Fin
Début
Réel base, hauteur, aire
Entier i
pour i de 1 à 5
obtenir base
obtenir hauteur
aire <- base x hauteur / 2
afficher aire
finpour
Fin
Début
Réel base, hauteur, aire
Entier i, nb
obtenir nb
pour i de 1 à nb
obtenir base
obtenir hauteur
aire <- base x hauteur / 2
afficher aire
finpour
Fin
Début
Réel somme, moyenne
Entier i, nb, note
obtenir nb
somme <- 0
pour i de 1 à nb
obtenir note
somme <- somme + note
finpour
moyenne <-somme / nb
afficher moyenne
Fin
Début
Entier nombre
obtenir nombre
tant que ( nombre < 101 ou (nombre % 17) ≠ 0)
obtenir nombre
fintantque
Fin
Début
Réel base, hauteur, aire
obtenir base
obtenir hauteur
tant que (base > 0 et hauteur > 0)
aire <- base x hauteur / 2
afficher aire
obtenir base
obtenir hauteur
fintantque
Fin
Début
Entier i, n, nb, max
obtenir n
obtenir nb
max <- nb
pour i de 2 à n
otenir nb
si (nb > max)
max <- nb
finsi
finpour
afficher max
Fin
Cet algorithme ne fonctionne pas s'il n'y a aucun nombre à saisir. Si on voulait prendre en compte ce cas particulier, il faudrait modifier l'algorithme.
Il faut utiliser une boucle "pour" car il y a un nombre déterminé d'itérations à effectuer. On peut savoir le nombre d'années sur lesquelles effectuer la simulation avant de commencer les calculs (il est donné par l'utilisateur).
Début
Entier i, nombre_annees
Entier adultes, enfants, naissances, total
adultes <- 28
lapereaux <- 53
obtenir nombre_annees
pour i de 1 à nombre_annees
naissances <- adultes / 2
adultes <- adultes + enfants
enfants <- naissances
finpour
total <- adultes + enfants
afficher total
Fin
Il faut utiliser une boucle "tant que" car il y a un nombre indéterminé d'itérations à effectuer. Il est impossible de connaitre le nombre d'années sur lesquelles faire la simulation au début (c'est justement le but du problème).
Début
Entier cible, nombre_annees
Entier adultes, enfants, naissances, total
adultes <- 28
lapereaux <- 53
total <- adultes + lapereaux
nombre_annees <- 0
tant que (total ≤ cible)
naissances <- adultes / 2
adultes <- adultes + enfants
enfants <- naissances
total <- adultes + enfants
nombre_annees <- nombre_annees + 1
fintantque
afficher nombre_annees
Fin
Début
Entier i, nombre, somme
somme <-0
obtenir nombre
pour i de nombre à 1000 par pas de nombre
somme <- somme + i
finpour
afficher somme
Fin
3)En utilisant le modulo (reste de la division entière) "%".
"x finit par 8" <==> "(x % 10) = 8"
Début
Entier i, nombre, somme
somme <-0
obtenir nombre
pour i de nombre à 1000 par pas de nombre
si ( (i % 10) ≠ 8)
somme <- somme + i
finsi
finpour
afficher somme
Fin
Il faut utiliser une boucle "tant que" car le nombre d'itérations est indéterminé, il dépend de ce que l'utilisateur saisit à chaque itération.
Début
Entier nombre_precedant, nombre_courant
obtenir nombre_precedent
obtenir nombre_courant
tant que (nombre_precedent ≠ nombre_courant)
nombre_precedent <- nombre_courant
obtenir nombre_courant
fintantque
Fin
Début
Entier i, puissance
puissance <- 1
pour i de 1 à 12
puissance <- puissance x 3
finpour
afficher puissance
Fin
Début
Entier i, j, choix, puissance
pour i de 2 à 18 par pas de 2
afficher "Entrez 1 pour afficher 3^" i
obtenir choix
si (choix = 1)
puissance <- 1
pour j de 1 à i
puissance <- puissance x 3
finpour
afficher puissance
finsi
finpour
Fin
Début
Réel note, somme, moyenne
Entier i, nb_notes_saisies, nb_notes
obtenir nb_notes_saisies
nb_notes <- nb_notes_saisies
somme <- 0
pour i de 1 à nb_notes_saisies
obtenir note
somme <- somme + note
si (note < 10)
somme <- somme + 2 x note
nb_notes <- nb_notes + 2
finsi
finpour
moyenne <- somme / nb_notes
afficher moyenne
Fin
Début
Entier nombre, a, b
Entier nb_multiples
nb_multiple <- 0
obtenir nombre
pour a de 2 à 101
pour b de 1 à nombre
si ( (a x b) = nombre)
nb_multiple <- nb_multiple + 1
finsi
finpour
finpour
si (nb_multiple > 0)
afficher "il y a" nb_multiple "multiples"
sinon
afficher "il n'y a pas de multiples"
finsi
Fin
Début
Entier saisie, max, nb_saisies
obtenir saisie
max <- saisie
nb_saisies <- 0
tant que (saisie > 0)
obtenir saisie
si (saisie > max)
max <- saisie
finsi
nb_saisies <- nb_saisies + 1
fintantque
afficher "nombre de saisies :" nb_saisies
si (max > 0)
afficher "maximum :" max
finsi
Fin
Il y a au maximum 13 nombres a stocker, un tableau de taille 13 permet ainsi de tous les stocker.
Début
Entier nombres[13]
Entier i,n
obtenir n
pour i de 0 à (n-1)
obtenir nombres[i]
finpour
pour i de 0 à (n-1)
si (nombre[i] % 3 = 0)
afficher nombres[i]
finsi
finpour
Fin
Début
Entier n
faire
obtenir n
tantque (n<1 ou n>17)
Fin
Début
Réel nombres[17]
Réel m
Entier i,n,res
faire
obtenir n
tantque (n<1 ou n>17)
pour i de 0 à (n-1)
obtenir nombres[i]
finpour
obtenir m
res <- 0
pour i de 0 à (n-1)
si (nombres[i] > m)
res <- res + 1
finsi
finpour
afficher res
Fin
Début
Entier cents
Entier nb_pieces
obtenir cents
nb_pieces <- cents / 50
si (nb_pieces > 0)
afficher nb_pieces "pieces de 50 cents"
finsi
cents <- cents % 50
nb_pieces <- cents / 10
si (nb_pieces > 0)
afficher nb_pieces "pieces de 10 cents"
finsi
cents <- cents % 10
si (cents > 0)
afficher cents "pieces de 1 cents"
finsi
Fin
Début
Entier heures
Réel salaire, paie
obtenir salaire
obtenir heures
si (heures < 36)
paie <- heures x salaire
sinon
paie <- (heures - 35) x salaire
paie <- paie x 1,3 + 35 x salaire
finsi
afficher paie
Fin
Affichage :
Une boucle Pour est nécessaire car on sait combien de valeurs il y aura dans le produit (n).
Début
Entier n, i, fact
obtenir n
fact <- 1
pour i de 2 à n
fact <- fact x i
finpour
afficher fact
Fin
Programme sans erreur :
Début
Entier i, nombre_saisi, reste_division
pour i de 1 à 4
reste_division <- nombre_saisi % 5
si ( reste_division = 0)
afficher nombre_saisi "est un multiple de 5"
sinon
afficher nombre_saisi "n'est pas un multiple de 5"
finsi
finpour
Fin
Une boucle "tant que" est nécessaire car on ne sait pas combien d'iterations il va y avoir, c'est le but du probleme de calculer ce nombre. La fin de la boucle est liée à une condition et il faut continuer TANT QU'elle n'est pas réalisée.
Début
Entier annee, alpha, beta
annee <- 0
alpha <- 5000
beta <- 10000
tant que (beta > alpha)
alpha <- alpha x 1.03
si (annee % 2 = 0)
beta <- beta + 750
finsi
annee <- annee + 1
fintantque
afficher annee
Fin
Une boucle "tant que" est nécessaire car on ne sait pas combien d'iterations il va y avoir. La fin de la boucle est liée à une condition (le reste de la division euclidienne doit etre nulle) et il faut continuer TANT QU'elle n'est pas réalisée.
Début
Entier a, b, reste
obtenir a
obtenir b
reste <- a % b
tant que (reste > 0)
a <- b
b <- reste
reste <- a % b
fintantque
afficher b
Fin
Début
Entier note, coeff
Entier somme_notes, somme_coeffs
Reel moyenne
Entier i
somme_notes <- 0
somme_coeffs <- 0
pour i de 1 à 5
faire
obtenir note
tant que (note < 0 ou note > 20)
faire
obtenir coeff
tant que (coeff < 1)
somme_notes <- somme_notes + note x coeff
somme_coeffs <- somme_coeffs + coeff
finpour
moyenne <- (somme_notes x 1,0) / somme_coeffs
afficher moyenne
Fin
Début
Entier heures, minutes, secondes
obtenir heures
obtenir minutes
secondes <- ( heures x 60 + minutes ) x 60
afficher secondes
Fin
Il y avait 9 erreurs
Programme sans erreur
Début
Entier a, b, essais
obtenir a
obtenir b
essais <- 0
tant que ( (b != a x a) et ((a % b) != 0) )
obtenir b
essais <- essais + 1
fintantque
afficher essais
Fin
Une boucle "pour" est nécessaire car il y a un nombre déterminé et fixe de valeurs à obtenir (6).
Début
Réel nombre, somme
Entier i
somme <- 0
pour i de 1 à 6
obtenir nombre
si (nombre < 0)
nombre <- 0 - nombre
finsi
somme <- somme + nombre
finpour
afficher somme
Fin
Une boucle "while" est nécessaire car on ne sait pas combien d'itération seront nécessaire. Cela dépend de ce que l'utilisateur saisit
Début
Réal prec, cour
Réel ecart, max
Entier nb
nb <- 0
max <- 0
faire
si (nb >= 2)
ecart <- cour - prec
si (ecart < 0)
ecart <- 0 - ecart
finsi
si (ecart > max)
max <- ecart
finsi
finsi
si (nb >= 1)
prec <- cour
finsi
obtenir cour
nb <- nb + 1
tant que (cour > 0)
si (nb<2)
afficher "erreur"
sinon
afficher ecart
finsi
Fin
q1) Une boucle "while" car on ne sait pas combien l'utilisateur fera d'essais pour la saisie
q2) Une boucle "pour" car le nombre de valeurs à tester est déterminé (de 2 au nombre saisi)
Début
Entier n, i, nb_divs
faire
obtenir n
tant que (n < 0)
si (n = 0)
afficher n " n'est pas premier"
sinon
nb_divs <- 0
pour i de 1 à n
si (n % i = 0)
nb_divs <- nb_divs + 1
finsi
finpour
si (nb_divs = 2)
afficher n "est premier"
sinon
affiche n "n'est pas premier"
finsi
Fin
Affichage :
Début
Entier i, tab[10]
Entier min, c
pour i de 0 à 9
obtenir tab[i]
si (i = 0 ou tab[i] < min)
min <- tab[i]
finsi
finpour
min <- min-1
faire
min <- min+1
c <- 0
pour i de 0 à 9
si (tab[i] <= min)
c <- c+1
finsi
finpour
tant que (c < 5)
afficher min
Fin