WikiBtsSio

TSc17Si4VoillaumeCours20161004Me

Cours du mardi 4 octobre 2016



///////////////////////////////////////////////////////////////
Mesurer un temps d'exécution.

///////////////////////////////////////////////////////////////
Les variables :
Nom du type Minimum Maximum
signed char -127 127
int -32 767 +32 767
long -2 147 483 647 +2 147 483 647
float -1 x1037 +1 x1037
double -1 x1037 +1 x1037

Pour les types entiers (signed char, int, long…), il existe d'autres types dits unsigned (non signés) qui eux ne peuvent stocker que des nombres positifs. Pour les utiliser, il suffit d'écrire le mot unsigned devant le type :
unsigned char 0 à 255
unsigned int 0 à 65 535
unsigned long 0 à 4 294 967 295

Format Type attendu
"%d" int
"%ld" long
"%f" float
"%f" double

Remarquez que le format utilisé pour afficher un float et un double est identique.

const int NOMBRE_DE_VIES_INITIALES = 5;
On ne peut pas modifier la valeur d'une constante.

Source
Dans la partie déclarer une variable.

///////////////////////////////////////////////////////////////
Fonctionne sur http://webcompiler.cloudapp.net/
using namespace std;
int main()
{
  • int a=1, b=2;
  • printf("a vaut :%d et b vaut:%d \n ", a, b);
}

///////////////////////////////////////////////////////////////
Fonctionne sur http://webcompiler.cloudapp.net/
#include <iostream> // nécessaire pour cout
using namespace std;
int main()
{
  • int a=1, b=2;
  • double r = 6.28;
  • cout << "chaine 1 = " << a << "\nchaine 2 = " << b ;
  • cout << "\nle rayon = " << r << endl;
}

Dans ce mini tutoriel je vais vous expliquer pourquoi il faut éviter d'utiliser la fonction scanf() en C pour récupérer les entrées du clavier.

///////////////////////////////////////////////////////////////
Fonctionne sur la machine Debian8 : saisieClavier1.c
#include <stdio.h>
int main()
{
  • double a = 12.0;
  • int b = 0;
  • printf("Entrez un double: ");
  • b = scanf("%lf", &a);
  • printf("Vous avez entre: %lf, \nvaleurs lues: %d\n", a, b);
}

///////////////////////////////////////////////////////////////
Fonctionne sur la machine Debian8 : saisieClavier2.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void clean(const char *buffer, FILE *fp);
int main ( int argc, char* argv[] )
{
  • char chaine[40] = ''''; // ATTENTION chaîne vide --> " suivi d'un autre guillemet "
  • printf("Entrez une chaine:\n");
  • fgets(chaine, sizeof(chaine), stdin);
  • clean(chaine, stdin);
  • printf("Chaine: %s.\n", chaine);
  • return 0;
}

void clean(const char *buffer, FILE *fp)
{
  • char *p = strchr(buffer,'\n');
  • if (p != NULL)
    • *p = 0;
  • else
  • {
    • int c;
    • while ((c = fgetc(fp)) != '\n' && c != EOF);
  • }
}

///////////////////////////////////////////////////////////////
Fonctionne sur la machine Debian8 : saisieClavier3.c
#include <stdio.h>
int main (int argc,char* argv[])
{
int a,b;

printf("Saisissez un caractère : ");
a = getchar();
while (getchar() != '\n');
printf("Vous avez tape la lettre %c\n", a);

printf("Saisissez un caractère : ");
b = getchar();
while (getchar() != '\n');
printf("Vous avez tape la lettre %c\n", b);

}

///////////////////////////////////////////////////////////////
En langage c++
Fonctionne sur la machine Debian8 : lecture1.cpp
Nécessite l'installation de C++ :apt-get install g++
#include <iostream>
int main()
{
  • int var;
  • std::cout << "saisir i : " ;
  • std::cin >> var;
  • std::cout << "\nla valeur de i = " << var << std::endl;
}
Compilation avec g++ lecture1.cpp -o lecture1
ATTENTION si on saisit une chaine c'est la cata !
Remarque pour éviter std:: on peut ajouter en début de programme : using namespace std;
Ce qui va donner la nouvelle version du programme ...

///////////////////////////////////////////////////////////////
En langage c++
Fonctionne sur la machine Debian8 : lecture2.cpp
#include <iostream>
using namespace std;
int main()
{
  • int var;
  • cout << "saisir i : " ;
  • cin >> var;
  • cout << "\nla valeur de i = " << var << endl;
}
///////////////////////////////////////////////////////////////
En langage C
Fonctionne sur la machine Debian8 : fonctions1.cpp

#include <stdlib.h>
#include <stdio.h>

double max(double x,double y); // Prototype de la fonction max

int main (int argc,char* argv[]) {
  • printf ("\nMax de 3 et 7 = %lf\n",max(3,7));
  • printf ("Max de 287 et 400 = %lf\n",max(287,400));
  • printf ("Max de 54328287 et 245987400 = %lf\n",max(54328287,245987400));
  • printf ("Max de 652909287 et 762524762 = %lf\n",max(652909287,762524762));
}

double max (double x , double y) {
  • double z;
  • z = y;
  • if (x > y){
    • z = x;
    • }
  • return z;
  • }

///////////////////////////////////////////////////////////////
En langage C une autre version peu différente ...
Fonctionne sur la machine Debian8 : fonctions2.cpp
double max(double x,double y); // Prototype de la fonction max

int main (int argc,char* argv[]) {
  • double a,b;
  • a = 3;
  • b= 28;
  • printf ("\nMax de %lf et %lf = %lf\n",a,b,max(a,b));
  • a = 546;
  • b= 908;
  • printf ("\nMax de %lf et %lf = %lf\n",a,b,max(a,b));
  • a = 20165;
  • b= 7643;
  • printf ("\nMax de %lf et %lf = %lf\n",a,b,max(a,b));
  • a = 8730;
  • b= 32409;
  • printf ("\nMax de %lf et %lf = %lf\n",a,b,max(a,b));
}
double max (double x , double y) {
  • double z;
  • z = y;
  • if (x > y){
    • z = x;
    • }
  • return z;
  • }

///////////////////////////////////////////////////////////////
En langage C une autre version peu différente ...
Fonctionne sur la machine Debian8 : fonctions3.cpp
Avec des entiers et la fonction min !
#include <stdlib.h>
#include <stdio.h>

int max(int x,int y);
Prototype des fonctions min et max
int min (int a,int b);

int main (int argc,char* argv[]) {
  • int a,b;
  • a = 3, b= 28;
  • printf ("\nMax de %d et %d = %d\n",a,b,max(a,b));
  • printf ("Min de %d et %d = %d\n",a,b,min(a,b));

  • a = 546;
  • b= 908;
  • printf ("\nMax de %d et %d = %d\n",a,b,max(a,b));
  • printf ("Min de %d et %d = %d\n",a,b,min(a,b));


  • a = 20165;
  • b= 7643;
  • printf ("\nMax de %d et %d = %d\n",a,b,max(a,b));
  • printf ("Min de %d et %d = %d\n",a,b,min(a,b));


  • a = 8730;
  • b= 32409;
  • printf ("\nMax de %d et %d = %d\n",a,b,max(a,b));
  • printf ("Min de %d et %d = %d\n",a,b,min(a,b));
}

int max (int x , int y) {
  • int z;
  • z = y;
  • if (x > y){
    • z = x;
    • }
  • return z;
  • }

int min(int a, int b) {
  • if (a < b) return a;
  • else return b;
  • }

///////////////////////////////////////////////////////////////
Quelques liens utiles :