• Aucun résultat trouvé

<- input/output math.h <- fonctions maths (sqrt) void main

N/A
N/A
Protected

Academic year: 2022

Partager "<- input/output math.h <- fonctions maths (sqrt) void main"

Copied!
1
0
0

Texte intégral

(1)

Cours 1, 6 janvier 2005 Résoudre ax2 + bx + c = 0

- Le C fonctionne toujours au niveau des adresses.

(les autres langages fonctionnent généralement avec identificateurs) scanf ("%f %f %f", &a, &b, &c)

f, pour float (réel)

%, pour code de format

&, "déposer à l'adresse de a".

float bla1, bla2; <- déclaration comme réel.

#include <stdio.h> <- input/output

math.h <- fonctions maths (sqrt)

void main () \

{ > obligatoire …

} /

Visual C++ de MS, ds MS studio 1- Nouveau

2- Application W32 console 3- …

4- Nouveau C++ source f., nommer 5- Editer

6- build -> .exe

(2)

Cours 2, 13 janvier 2005

A) Information en C

Une information, en C, est caractérisée par:

1- Son nom (identificateur) caractères: lettre chiffres et _, commençant par une lettre ex.: taille, tp1, nbPouces, PIED_EN_METRES

contre-ex.: 1erTP, TP#1, "TP 1".

conseil: choisir un identif significatif et de longueur raisonnable nota: tp1, Tp1, tP1 et TP1 sont différents

2- Son type:

- int entier 27, -12, 12549, etc.

- float réel 1.27, 2.45, 0.0, -14.235, etc.

- char un caractère 'b', '-', 'Z', etc.

3- Sa valeur:

ex.: age int 27

poids float 72.9

sexe char 'H'

4- Sa nature:

- constante: valeur inchangée durant le traitement du programme (identificateurs tout en majuscules)

ex.: #define PI 3.141592654

#define BAR_INTRA 0.20

#define TAUX_PS 0.07 const int AGE_MAX=139;

const float NOTE_MAX=1000;

- variable

5- Code de format (pour la lecture et l'écriture) (résumé fin de la page 2 sur doc du jour)

6- Le nombre d'octets pour mémoriser l'information et son adresse mémoire.

int age = 21;  sizeof(age) = sizeof(int) = 4 float taille = 1.75;  sizeof(float) = sizeof(float) = 4 - l'adresse du premier octet est l'adresse de 'information.

&taille

&age

nota: \n (new line), changer de ligne

dans %d, on peut mettre %5d , on réserve alors 5 espaces pour le int

dans %f, on peut mettre %6.2f , on réserve 6 espaces et on veut 2 décimales

B) Opérateurs :

Pour manipuler (opérer) les informations (résumé sur la page 3 du document) 1- Opérateurs arithmétiques (pour les calculs)

+ - / (division entière) * nota: attention! (4/9 donne 0)

% (le modulo, soit le reste d'une division) (4.0/9 donne 0.444…) 2- Opérateurs relationnels

== != < > <= >= (trivial) 3- Opérateurs logiques (pour relier deux conditions ou le contraire)

! (contraire)

&& (ET logique)

|| (OU logique)

(3)

C) La sélection (le choix) 'if' if ( condition )

instruction A else

instruction B

nota: un if dans un if (ou else) est "if" imbliqué.

(4)

Cours 3, 20 janvier 2005

1- Instructions: A) simple: Une seule action, se termine par ; B) Composée: Un bloc de plusieurs instructions, entre { } 2- if imbriqués if à l'intérieur d'un if (…)

if

bla else

if

bla else

bla 3- Sélection multiple "suivant que" (switch):

switch (variable) { case blu1:

bla break;

case blu2:

bla break;

case blu3:

bla break;

default:

}

srand(time(0)); Lancer générateur aléatoire

maVariable = rand() % max; Obtenir la valeur, entre 0 et max, exclu

(5)

Cours 4, 27 janvier 2005 Utilisation des types de boucle

1- for

a) Quand on connaît d'avance le nombre de répétitions

b) Quand on connaît la valeur de départ, la valeur d'arrivée et que le pas est une constante.

2- while

a) Quand on ne sait pas à l'avance le nombre de fois qu'il faut répéter le traitement.

ex.: Tant que (je ne trouve pas)  on cherche ex.: Pour la lecture d'un fichier

3- do … while

a) Comme le while, sauf qu'on effectue au moins une fois le traitement.

Nota: Les types de boucle sont généralement interchangeables, (…)

Statistiques de base

Voir: Fichiers cours 4\semaine4.doc, page 3.

À noter: fflush(stdin);

(6)

Cours 5, 3 février 2005

A) Fichiers: Fichiers cours 5\fichier_1969.doc

Lexique: FILE * maVar = fopen ("monfichier", "r"); // r ou w while (! feof(maVar)) …

fscanf(maVar, "mes codes de format", &adresses);

fprintf … fclose(maVar);

NOTA: même en lecture, ne PAS OUBLIER le \n …

B) Tableaux à un seul indice 1- Pourquoi un tableau?

o avec un seul nom, on travaille sur plusieurs variables o on peut profiter de plusieurs algorythmes disponbles:

- trier - rechercher - etc…

2- Déclaration et initialisation

a) Déclarer un tableau nombre de cafés et initialiser avec 2 tasses, 1, 0, 3, 2, 1 … int nbCafe[] = {2,1,0,3,2,1};

 nbCafe[0] == 2

b) Déclarer un tableau d'au maximum 15 personnes et initialiser les tailles suivantes: 1.72, 1.65, 1.60.

#define MAX_PERS 15;

float taille[MAX_PERS] = {1.72, 1.65, 1.60};

c) Déclarer un tableau et remplir plus tard;

#define MAX_PERS 15;

float taille[MAX_PERS], poids[MAX_PERS];

int numero[MAX_PERS];

char sexe[MAX_PERS];

int nbPers;

3- Trier un tableau

- faire un tri avec 2 for imbriqués, avec un swap si plus petit (par exemple), boucler le j de i à la fin, boucler i de 0 à longueur -1

nota: pour initialiser à 0, il faut utiliser une boucle for

(7)

Cours 6, 10 février 2005

Fonctions… avec return

Dans le TP, éviter une lecture avec 9x %f, plutôt une boucle for…

Fait partie de l'intra:

1- Pas de type boolean en C   

Pas de type string non plus, plutôt utiliser char chaine[MAX_CAR] = "bla";

en C, c'est un int 1 ou 0

2- Condition synthétisée: return a < b ? a : b ; /* Retournera a si vrai, b si faux */

3- Pour avoir la taille d'un tableau sans borne: taille = sizeof(tableau) / sizeof(type);

4- Majuscule à partir de minuscule, c = c + 'A' – 'a';

En supplément (pas à l'intra): for (i=0, j=k-1; i <j; i++, j--) {…

(8)

Cours 7, 17 février 2005

Nota: à partir de #2 TP2, minimiser le code du programme principal  fonctions Les avantages de décomposer un long programme en petites fonctions:

- On peut partager la programmation

- La logique de chaque fonction est plus simple

- La maintenance du programme est moins complexe/dispendieuse

Révision:

a) Écrire les déclarations et initialisations des 2 tableaux::

b) Calculer et afficher la moyenne de chacun des deux tableaux c) Compter et afficher le nombre d'item > x ou < y

longueur d'un tableau  int nb = sizeof(taille) / sizeof(float); // Si ce sont des float bien sûr

"faire le nécessaire"  écrire les appels et la fonction

pas de boolean  int !

test dans un tableau  for avec return imbriqué pour éviter de faire des tests inutiles;

Conseils:

1- Apporter les feuilles résumées des matières.

2- Apporter les imprimés des TPs 3- Ne pas laisser de réponse vide 4- Bien répartir son temps

(9)

Cours 8, 10 mars 2005

C) Tableau à 2 indices tableau[0][0] …

Programmation 1- Déclarer :

#define MAX_ETUD 90

#define NB_NOTES 7

typedef float TabReel[MAX_ETUD][NB_NOTES];

Dans le programme:

a) TabReel note;

b) Dans l'entête de la fonction, on a le choix:

(…, TabReel note, …) ou

(…, float note[][NB_NOTES],…) c) Presque toujours travaillé avec for

Utile pour TP3, #1 A, mxn, B, nxp, C mxp for (i=0; i< m; i++)

for (j=0; j<p; j++) { C[i][j]=0.0;

for (k=0; k < n; k++) c[i][j] += A[i * B[ …

fscanf(aLire, "%c", &operation);

switch(operation) {

… case 'x':

fscanf(aLire, "%d%d%d\n", &m, &n, &p);

lire(aLire, A, m, n); afficher(A, "A", m, n);

lire(aLire, B, n, p); afficher(B, "B", n, p);

multiplier(A, B, m, n, p, C);

afficher(C,"C=AxB",m,p);

break;

… }

idempotente, 'i', A2=A

nilpotente, 'n', Ax=0 (ordre = x)

symétrique, 's', Aij=Aji (une partie!, … break!)

(10)

Cours 9/10, 24 mars 2005 Type énumération:

But: Donner un nom à une constante pour la clarté du codage.

Le C permet: note[29][Intra] (plutôt que note[29][0])

 enum {Intra, Final, TP1, TP2, TP3, TPs, Globale};

for (i = Intra; i <= Globale; i++) …

 enum Categorie {Intra, Final, TP1, TP2, TP3, TPs, Globale};

enum Categorie cat;

note[11][TPs] = note[11][TP1] + note[11][TP2] + note[11][TP3];

ou

note[11][TPs] = 0.0;

for (cat = TP1; cat <= TP3; cat++) …

 enum {Lundi = 2, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche = 1};

switch (rang) { case Lundi:

Le type structure et le tableau de structure

But: Être moins lourd et moins long à programmer qu'avec une série de tableaux. (entêtes, permutations, nombreux)

 struct { (fortement déconseillé)

float taille;

int age;

} pers1, pers2;

 struct Personne { float taille;

int age;

} pers1, pers2;

struct Personne pers3;

 typedef struct {

float taille;

int age;

} Personne;

Personne pers3;

pers2.taille = 1.72; pers2.age = 23;

pers2 = pers1; *** Affecte les valeurs de pers1 à pers2 ***

Tableau de structure:

ex.: #define MAX_PERS 25 typedef struct {

float taille;

int age;

} Personne;

Personne pers[MAX_PERS];

pers[3].taille = 1.75;

Nota: Le type structure est l'ancêtre de la notion de classe dans la programmation orientée objet (POO)

(11)

Cours 11, 31 mars 2005 - absent -

Etudiant * p = &etud[1]; le pointeur p reçoit l'adresse de la variable etud[1]

printf("%s %4.1f\n", p->codePerm, p->note[TP1]);

p-> codePerm "le code permanent pointé par p"

Nota: (*p).champ est équivalent à p->champ

Nota: p++ augmente l'adresse pour passer automatiquement à l'adresse de la structure suivante!

ex.:

void calculer(float poids[], int nbPers, float *p1, float *p2) { float sommePoids = 0.0;

int i;

for (i = 0; i < nbPers; i++) sommePoids += poids[i]

*p1 = poids[0] + poids[1];

*p2 = sommePoids / nbPers;

}

………

float poids = {56.2, 78.9, …}

int nbPers = sizeof(poids)/sizeof(float);

float somme, moyen;

calculer(poids, nbPers, &somme, &moyen);

printf("%6.2f %6.2f\n", somme, moyen);

(12)

Cours 12, 7 avril 2005 1) Le C++ vs le C

(non évalué pour H05)

Le C++, c'est le C incluant des nouveautés.

Buts:

- Rend la programmation plus élégante, plus agréable.

- Permet de faire de la POO template = patron

2) POO (non évalué)

Références

Documents relatifs

[r]

Classes de Premières S1-S2 Année scolaire 2011-2012. Sens de variation - Fonction

[r]

Cette fonction &#34;bizarre&#34; est donc continue en toute valeur réelle qui n’est pas de la forme 1.. n avec n entier relatif non nul mais qui est continue

▪ Le minimum d'une fonction est la plus petite valeur (si elle existe) prise par la fonction sur son domaine de définition.. ( C'est donc une valeur de f(x) et pas la valeur de

Avec précaution, l’électricien tend la main vers sa caisse à

Explications Ordre inversé car fonction inverse (que ce soit les positifs ou les négatifs) et valeur interdite en 3

Une fonction s'écrit à peu près de la même façon que la fonction principale (voir la définition d'une fonction divide dans l'exemple suivant);:. Un premier programme avec une