Introduction à l’informatique et applications à la biologie

V - Les types (version 3.0)

Prof. Patrick E. Meyer

Algorithme de soustraction

-1 (emprunt)


+137

-092


045 (solution)

  • en binaire: \[10110 - 10011\]
  • en quaternaire: \(GCAAGC - CTACT\) (convention CTAG)?

Codage d’un nombre négatif

  • proposition1: bit de signe

    ici 01011100 vaut 92 et 11011100 -92 (pas 220)

  • proposition2: le NOT (complément à un)

    ici 01011100 vaut 92 et 10100011 -92 (pas 163)

  • sur 8 bits, on code des nombres de -127 à +127

  • problème: circuit \(soustracteur \neq additioneur\)

  • or idéalement \[5-4 = 5+(-4)\]

Le complément à deux

  • complément à 1 auquel on ajoute 1
  • quand le premier bit est à 1, c’est un nombre négatif
  • 8 bits codent pour des nombres de -128 à +127
  • et ceci fonctionne avec le circuit additionneur!

Rappel

  • 13 = -3 comme pour une montre, s’il est 50 il est -10
  • Bref, les humains calculent en base 10
  • écrivent en base 27+ (26 lettres + ponctuations)
  • lisent les minutes et secondes en base 60
  • mais les heures, les mois et les notes de musique sont en base 12

Types de variable

Qu’affiche ce code si on entre G au clavier?

    #include<iostream>
    using namespace std;
    
    int main() {
      
      int b = -8;
      char c;
      cin >> c;
      bool a = ((b<=10) && (c=='G'));
      cout << a << endl << b;
      
      return 0;
    }
  • les opér. de comparaison ‘==, !=, >=, <=, >, <’
    créent implicitement des booléens

Spécificités du C++

  • type bool 1 bit, char 8 bits et int 32 bits (range?)
    en R toutes les variables sont codées sur 32 bits, c’est plus convivial (pas de déclaration) mais moins efficace

  • std::endl contient le caractère de passage à la ligne

  • std::endl, std::cin, std::cout prédéfinis dans iostream

  • using namespace std; permet d’éviter d’écrire les std::

Ecriture et lecture de fichiers

Si input.txt contient: Bonjour!, que fait ce code ?

    #include<fstream>
    using namespace std;
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    
    int main() {
      
      int b = -8;
      char c;
      fin >> c;
      bool a = ((b<=10) && (c=='G'));
      fout << a << endl << b;
      
      return 0;
    }
  • input.txt doit être dans le dossier du code .cpp

Algorithme

“Un algorithme est la description d’une suite d’étapes permettant d’obtenir un résultat à partir d’éléments fournis en entrée”

Par exemple,

  • addition et soustraction dans n’importe quelle base
  • recette de cuisine
  • chemin à prendre
  • attention à l’orthographe: algorythme :(