IFT1969 Programmation scientifique en C Michel Reid Traitement de l’information

IFT1969 Programmation scientifique en C Michel Reid Traitement de l’information Catégorie d’information – Les données – Les résultats – Les informations intermédiaires Identificateurs Suite de caractères ( lettres, chiffres ou _ ) qui commence par une lettre. Caractères accentués interdits ainsi que #, blanc , ? , … Seuls les 32 premiers caractères seront significatifs Attention, le C fait la différence entre minuscule et majuscule. Types de base Entier int Réel float Un caractère char Booléen n’existe pas, une valeur non nulle est considérée vraie, une valeur nulle ou zéro est traitée comme fausse. Chaîne de caractères n’existe pas, on utilise des tableaux de caractères. Autres long, double, etc. Plus tard. Déclaration d’une variable Une variable est une information dont la valeur peut changer au cours de l’exécution du programme. Syntaxe de la déclaration : – type liste de noms de variables de ce type; • int le_chiffre; • int a, b, le_chiffre; – On peut initialiser la variable à la déclaration • int a= 0, b= 10, le_chiffre; Commentaires En C, un commentaire débute par /* et se termine par */ Un commentaire peut s’échelonner sur plusieurs lignes Affectation En utilisant l’opérateur = age = 23; a = age; a = age = 0; La variable située du coté gauche du = représente un contenant, l’endroit où sera déposée la valeur, alors que la variable du côté droit représente la valeur contenu dans la variable. Affectation élargie Permet de simplifier certaines affectations A = A + 5;  A += 5; B = B * 3;  B *= 3; A = A / 3;  A /= 3; B = B – 5;  B -= 5; Conversions implicites à l’affectation Si on affecte un int à un float, conversion de la valeur en float pas de décimale. Un float à un int, valeur est tronquée, seule la partie entière est conservée Un char est considéré comme un entier sur 1 octet (code ASCII) char Lettre; Lettre = 67; /*valide, Lettre vaut le caractère‘C’*/ Opérateurs arithmétiques +, - addition et soustraction * multiplication / division (réelle ou entière) % modulo ( le reste de la division, n’est possible qu’entre 2 entiers ) Opérateurs arithmétiques – Si les 2 opérandes sont entières, alors le résultat sera un entier. – Si au moins une des 2 opérandes est un réel, le résultat sera un réel. – Un caractère, dans une expression, est considéré comme un entier. Ex. la valeur de ‘A’ + 1 est 66 car le code ASCII de ‘A’ est 65. Incrémentation Post-incrémentation ( ++ ) nombre++;  nombre = nombre + 1; Lorsque le ++ est placé après son opérande, celle-ci sera incrémenté après son utilisation dans une instruction. Pré-incrémentation ( ++ ) ++nombre;  nombre = nombre + 1; Lorsque le ++ est placé avant son opérande, celle-ci sera incrémenté avant son utilisation dans une instruction. Décrémentation post-décrémentation nombre-- ;  nombre = nombre – 1; Pré-décrémentation --nombre ; nombre = nombre – 1; Opérateurs relationnels == est égale à != est différent de < est inférieur à <= est inférieur ou égale à > est supérieur à >= est supérieur ou égale à Le résultat d’une opération relationnel est 1 (entier) si la relation est vraie, 0 si elle est fausse. Opérateurs logiques ! le contraire de (non) && et logique || ou logique Le résultat d’une opération logique est 1 si c’est vrai, 0 si c’est faux. Priorités des opérateurs ( ) - ! Opérateurs unaires, ex, -a !a * / % + - < <= > >= == != && || Dans le cas où les opérateurs ont la même priorité, l’expression est évaluée de gauche à droite. Constantes 2 façons de déclarer des constantes en C #define identificateur valeur Exemple : #define TPS 0.07 Cette façon est une instruction au compilateur qui recherche identificateur dans les expressions du programme et le remplace par valeur avant la compilation. Très utile pour la déclaration de tableaux. const type identificateur = valeur ; Exemple : const float TPS = 0.07 ; L’affectation ne peut se faire qu’à la déclaration. printf printf(“format”,liste des valeurs à afficher ); – Le format contient le message à afficher avec des codes de formats pour les valeurs que l’on veut faire afficher. – Quelques codes de formats %d un entier %f un float, par défaut, l’affichage aura 6 décimales %c un caractère %s une chaîne de caractères printf Gabarit d’affichage – On peut spécifier un nombre minimum de caractères pour écrire une valeur, ainsi qu’une certaine précision. • Ex : %6.2f : un réel à 2 décimales, la valeur de la seconde décimale sera arrondi au besoin, un point décimal et 3 caractères pour la partie entière. Si la partie entière ne peut s’afficher sur 3 caractères, printf utilisera le nombre d’espaces nécessaires. • %4d un entier affiché sur au moins 4 caractères, plus si la valeur est supérieur à 9999 • Dans ces 2 cas, si la partie entière est plus petite que le nombre minimum de caractères, les caractères additionnels seront des espaces placés à la gauche de la valeur. scanf scanf(“format”,liste des adresses de variables à lire); – Les codes de formats sont les même que pour printf • L’utilisation de gabarit n’est pas souhaitable – Ex: : scanf(“%d %f”, &unEntier, &unFloat); • En cas d’incompatibilité entre le format et la valeur lue, scanf s’interrompt et certaines des variables auront conservées leur ancienne valeur. • Si un nombre insuffisant de valeur est tapé au clavier, scanf attend que toutes les valeurs soient saisies ou bien de rencontrer une erreur avant de s’arrêter. • Toute valeur additionnelle est conservée dans la zone tampon du clavier. Instructions de contrôle if…else Syntaxe if(condition) Instruction1 else Instruction2 La condition est une expression dont la valeur, si elle est non- nulle est considéré comme vrai, dans ce cas l’instruction1 est exécutée. Sinon, l’instruction2 est exécutée. Le else est facultatif Instruction1 et instruction2 sont soit des instructions simples, structurés ou encore composés (blocs d’instructions) Instructions de contrôle if…else Instructions simples Expression, habituellement sur une ligne, se terminant par un ; Ex: total = prix + taxes ; Instruction structurée Instruction de contrôle comme if…else, switch ou une boucle Bloc d’instructions Plusieurs instructions simples ou structurées entre { et } { taxes = prix * taux; total = prix + taxes; } Instructions de contrôle switch Cas particulier du if lorsque l’on test plusieurs valeurs (entières ou caractères) qui sont mutuellement exclusives switch(unChiffre) { case 1 : a = b + c; break; case 2 : a = b * c; Break; default : a = b / c; } Instructions de contrôle switch • unChiffre est une valeur entière ou caractère • Le case sert à indiquer le point d’entrée dans le switch si unChiffre a cette valeur. • À partir du point d’entrée, toutes les instructions suivantes sont exécutées jusqu’à l’occurrence d’un break ou de la fin du switch. • Le default est facultatif, s’il est présent, c’est le point d’entrée de toutes les valeurs qui ne sont pas spécifiées dans un case. • La valeur d’un case ne peut être un intervalle. Instructions de contrôle boucle do…while Syntaxe do instruction while(condition); L’instruction peut être simple, structurée ou un bloc. Si la condition est vraie, l’instruction de la boucle est ré-exécutée. L’instruction sera exécutée au moins une fois. Instructions de contrôle boucle while Syntaxe while(condition) instruction L’instruction peut être simple, structurée ou un bloc. Si la condition est vraie, l’instruction de la boucle est exécutée. La condition est évaluée au début de la boucle, donc il est possible que l’instruction dans la boucle ne soit jamais exécutée. Instructions de contrôle boucle for Syntaxe for(expr1; expr2; expr3) instruction L’instruction peut être simple, structurée ou un bloc. expr1: initialisation avant la 1ière itération. expr2: condition qui est évaluée avant chaque itération. expr3: instruction effectuée à la fin de chaque itération – incrémentation, décrémentation, etc. Adresse On utilise très souvent les adresses dans : – la saisie des données avec scanf – les appels des fonctions pour recevoir des valeurs retournées L’adresse (son emplacement en mémoire) d’une variable est accessible par l'opérateur & (adresse de) – ex : scanf((“%d”,&unEntier); • scanf a besoin de l’adresse en mémoire de la variable unEntier pour y placer la valeur lue Taille d’un emplacement en mémoire Pour connaître la taille d’un emplacement en mémoire, nous utilisons la fonction sizeof( ); – Le paramètre passé est soit un type, soit une variable – Le résultat retourné est le nombre d’octets nécessaire pour stocker une valeur de ce type – sizeof(char); /* retourne 1 */ – sizeof(unEntier); /* retourne 4 si unEntier est déclarer int */ Pointeurs On utilise des pointeurs dans : – La transmission des arguments par pointeurs (résultats de retour) – La manipulation des tableaux – Les fichiers : FILE * aLire, * aCreer – Les chaînes de caractères – Les structures de données dynamiques (liste linéaire chaînée, arbre binaire, ...) – Etc. Pointeurs (suite) Un pointeur est uploads/Sante/ ift-1969.pdf

  • 33
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Nov 24, 2021
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 0.7025MB