Noms des élèves : Bac. S – Spécialité ISN
Introduction à la programmation Structures de contrôle
SPE - ISN Utiliser les types, les variables, les fonctions et constantes Durée du TP : 30minutes
Organisation : Les manipulations se feront à l’aide de QT Creator installé sur les ordinateurs Structures conditionnelles
1/ Ecrire un programme qui restitue la chaîne de caractère « Bravo ! » lorsque l’utilisateur saisi
« Bonjour » dans texteEdit et « Soyez poli ! » dans le cas contraire
2/ Effacer les modifications précédentes et écrire une deuxième structure grâce à laquelle le jour de la semaine est écrit dans le champ de saisi en fonction du numéro rentré (de 1 à 7). Le premier jour de la semaine est le lundi.
Le programme éliminera les nombres qui ne sont pas compris entre 1 et 7 en écrivant « Valeur invalide ». On utilisera une fonction pour alléger la procédure on_validBtn_clicked
Structures itératives
3/ Ecrire le programme permettant de calcul la factorielle du nombre saisi. Utiliser une fonction pour le calcul. Quel est le maximum de la valeur avant dépassement de capacité ?
NB27/02/2022 Structures de contrôle 1/3
Noms des élèves : Bac. S – Spécialité ISN
4/ On souhaite calculer le déplacement d’une balle après n rebonds. La hauteur initiale de la balle est de 1m. A chaque rebond, la hauteur diminue de 20%.
Modifier le programme précédent de sorte que la valeur saisie correspond au nombre de rebonds.
Dans le header :
class MainWindow : public QMainWindow {
Q_OBJECT public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
float hauteurTotale=1;
float hauteurPrecedente=1;
float nouvelleHauteur(float h);
public slots:
void on_actionQuitter_triggered();
void on_validBtn_clicked();
private:
Ui::MainWindow *ui;
};
Dans le fichier source :
//--- void MainWindow::on_validBtn_clicked()
{
QString nombreChaine;
int N;
nombreChaine = ui->texteEdit->text();
N=nombreChaine.toInt();
//on connait le nombre de rebonds donc une structure FOR est nécessaire for (int i=0;i<N-1;i++)
hauteurTotale+=2*nouvelleHauteur(hauteurPrecedente);
//on rajoute la dernière hauteur s'il y a au moins un rebond if (N>0)
hauteurTotale+=nouvelleHauteur(hauteurPrecedente);
ui->texteEdit->setText(QString::number(hauteurTotale)+'m');
//on réinitialise les valeurs hauteurPrecedente=1;
hauteurTotale=1;
}
//--- float MainWindow::nouvelleHauteur(float h)
{
hauteurPrecedente=hauteurPrecedente*0.8;
return hauteurPrecedente;
}
5/ Cette fois ci, on veut connaitre le nombre de rebonds (r) faits par la balle jusqu’à ce que sa hauteur de rebond soit inférieure à 2cm. La hauteur initiale est donnée en cm.
NB27/02/2022 Structures de contrôle 2/3
Noms des élèves : Bac. S – Spécialité ISN
void MainWindow::on_validBtn_clicked() {
QString nombreChaine;
float H;
nombreChaine = ui->texteEdit->text();
H=nombreChaine.toFloat();
int r=0;
/*on ne connait pas le nbre de répétitions et une valeur inférieure à 2 peut-être saisie… Il faut une boucle WHILE */
while (H>2) {
r++;
H=nouvelleHauteur(H);
}
//le dernier rebond ne doit pas être comptabilisé if (r>0)
r=r-1;
ui->texteEdit->setText(QString::number(r)+" rebond(s)");
}
//--- float MainWindow::nouvelleHauteur(float h)
{
return h*0.8;
}
NB27/02/2022 Structures de contrôle 3/3