15
Faculté des Sciences de Gabes Département d’informatique Cours ASD II 18/02/2018 LFSI 1 – LARI 1 1 18/02/2018 Khaled Hassine 1 [email protected] Par : Khaled Hassine CHAPITRE II – LES ENREGISTREMENTS 18/02/2018 Khaled Hassine 2 Cas des tableaux et des pointeurs Manipulation des enregistrements Introduction Enregistrement et fonction PLAN Déclaration des enregistrements 18/02/2018 Khaled Hassine 3 Cas des tableaux et des pointeurs Manipulation des enregistrements Introduction Enregistrement et fonction PLAN Déclaration des enregistrements 18/02/2018 Khaled Hassine 4

CHAPITRE II – LES ENREGISTREMENTS 2 ASD II Structures.pdfFaculté des Sciences de Gabes Département d’informatique Cours ASD II 18/02/2018 LFSI 1 – LARI 1 1 18/02/2018 Khaled

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 1

18/02/2018 Khaled Hassine 1

[email protected]

Par :Khaled Hassine

CHAPITRE II – LESENREGISTREMENTS

18/02/2018 Khaled Hassine 2

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 3

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 4

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 2

Motivations

Le tableau : est la structure de données la plus connue est une structure homogène : tous les éléments sont de même type et codées de la

même façon sur le même nombre de bits occupe de la place successive dans la mémoire

Impossible de décrire des informations de type différents Dans certaines applications, ces types de données ne répondent pas à nos

besoins car nous voulons regrouper des données de différents type différents Exemple fiche d’un étudiant :

Nom : chaine de caractères Age : entier Sexe : typé énumératif (masculin ou féminin) Matricule : Entier CIN : …

18/02/2018 Khaled Hassine 5

Motivations …

Il est généralement utile de pouvoir rassembler des éléments de

type différents.

On parle alors d’enregistrement ou de structure.

L'avantage d'une structure est de regrouper des informationssémantiquement liées pour éviter de multiplier les variables

et bien faire apparaitre la logique du traitement : il est plus

simple de comprendre un programme qui manipule des dates

qu'un programme qui manipule trois variables (jours, mois,

année).

18/02/2018 Khaled Hassine 6

Définition d’un enregistrement

Une structure (ou enregistrement) est une collection deplusieurs variables (champs, rubriques) groupéesensemble.

Une structure permet de rassembler sous un même nomdes données de types différents (structure hétérogène).

Les champs d’une structure sont appelées membres etpeuvent être de n’importe quel type (entières, flottantes,tableaux, caractères, pointeurs, autres structures, …)

Exemple : fiche d'indentification d'une personne nom, prénom, âge, liste des diplômes, etc.

18/02/2018 Khaled Hassine 7

Définition …

Une structure est un moyen de regrouper desobjets (des variables), de même ou de différentstypes, au sein d’une entité repérée par un seulnom de variable.

Les variables contenues dans la structure sontappelées champs de la structure.

Pour une variable de type structure, le compilateurréserve une zone mémoire de taille la somme detous les champs de cette structure.

18/02/2018 Khaled Hassine 8

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 3

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 9

Déclaration d’un enregistrement

Deux approches : Définir une variable de type enregistrement

Définir un type générique de l’enregistrement (unmodèle) puis définir la variable

La deuxième est l’approche la plus structurée;c’est l’approche recommandée

18/02/2018 Khaled Hassine 10

Déclaration d’un enregistrement commevariable

Déclaration de la variableId_Variable : Enregistrement (Structure)

type1 nom_de_champ_1;type2 nom_de_champ_2 ;

...typen nom_de_champ_n;

Fin Enregistrement

Structure hétérogène : les éléments peuvent être d’un typedifférent

Occupe des zones successives en mémoire

18/02/2018 Khaled Hassine 11

Déclaration d’un enregistrement à traversun type générique

Déclaration du Type enregistrement : Type_Enr = Enregistrement (Structure)

type1 nom_de_champ_1;type2 nom_de_champ_2;

...typen nom_de_champ_n;

Fin Enregistrement; Ceci définit le modèle de la structure mais ne réserve pas de variables

correspondant à cette structure.

Déclaration de la variable : Type_Enr Id_Variable

18/02/2018 Khaled Hassine 12

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 4

Initialisation des enregistrements

La valeur initiale de chaque champ ne peut êtreintroduite à l’intérieur de la définition du typegénérique de donnée et non une variable.

C’est seulement lors de la déclaration d’unevariable que l’on peut introduire des valeursinitiales pour les différents champs.

18/02/2018 Khaled Hassine 13

Exemple

Déclaration du type générique :t_date = Enregistrement

entier : anentier court : moisentier court : jour :

Fin Enregistrement; Déclaration d’une variable :

aujourdhui : t_date;

AffectationAvec aujourdhuifaire

jour 17;mois10;an 2006;

Fin faire

18/02/2018 Khaled Hassine 14

Enregistrement en mémoire

18/02/2018 Khaled Hassine 15

aujourdhui.an #4000

...

...

aujourdhui.an; #4002

...

aujourdhui.an;#4001

000007

11

#0

Occupe de la placesuccessivedans la mémoire

aujourdhui.an; #4003aujourdhui.mois; #4004aujourdhui.jour; #4005

D60A

Déclaration d’une structure en C

Syntaxe de la déclaration de la gabarie :

struct <Identificateur de la structure>

{ <Type 1> < Identificateur champ 1> ;

<Type 2> < Identificateur champ 2> ;

….<Type n> < Identificateur champ n> ;

} ;

Syntaxe de la déclaration de variable de type structure :

struct <id. de la structure> <identificateur de la variable> ;

18/02/2018 Khaled Hassine 16

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 5

Exemple d’une structure en C

Déclaration d’une structure complexe et d’une variable z de type

complexe :

struct complexe

{ float Partie_reelle ;

float Partie_imaginaire ;

} ;

struct complexe z ;

18/02/2018 Khaled Hassine 17

Portée du nom des champs

Deux structures différentes peuvent contenir desmembres de même nom sans qu’il y ait de conflit.

La portée du nom d'un membre est limité à la structuredans laquelle il est défini. On peut avoir des membreshomonymes dans des structures distinctes.

Pas de confusion dans les déclarations suivantes :

18/02/2018 Khaled Hassine 18

struct s1{ float x;

int y ;};

struct s2{ char x;

float y;};

Exemple 2 :

18/02/2018 Khaled Hassine 19

struct Date{int jour;int mois;int an;} hier, demain;

struct Date Début_vacances;struct Date semaine[7];

struct Date nouvel_an = { 1, 1, 2018 };

struct Date{int jour;int mois;int an;} hier, demain;

struct Date Début_vacances;struct Date semaine[7];

struct Date nouvel_an = { 1, 1, 2018 };

Déclaration desvariables avant ‘;’ .

Initialisation .

Identificateur de lastructure (type)

Type personnalisé des données

La déclaration typedef permet de définir ce que l'on nommeen langage C des types synonymes.

S'applique à tous les types et pas seulement aux structures. Syntaxe :

typedef <Ancien id de type> <nouveau id. de type> Exemple :

typedef int entier;signifie que entier est ''synonyme'' de int, de sorte que lesdéclarations suivantes sont équivalentes :int n, p ;entier n, p ;

18/02/2018 Khaled Hassine 20

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 6

Exemples : typedef

Le type vecteur est synonyme de tableau de 3entiers :

typedef int vecteur[3] ; v1,v2 deux tableaux de 3 entiers chacun :vecteur v1, v2 ;

Le nouveau type fpointeur est synonyme depointeur sur un réel

typedef float *fpointeur ; fa, fb sont deux pointeurs sur réel

fpointeur fa, fb ;

18/02/2018 Khaled Hassine 21

typedef et les structures

En faisant usage de typedef, les déclarations des structurespeuvent être réalisées comme suit:struct enreg{ int numero ; int qte ; double prix ;};typedef struct enreg s_enreg ;s_enreg art1, art2 ;

ou encore, plus simplement:typedef struct{ int numero ; int qte ; float prix ;} s_enreg ;s_enreg art1, art2 ;

18/02/2018 Khaled Hassine 22

Typedef : Exemple

Définition du type date :struct date {int jour ;int mois ;int année ;} ;typedef struct date DATE ;

La déclaration d’une variable de type DATEDATE d1 ;

est équivalent à struct date d1 ;

18/02/2018 Khaled Hassine 23

Structures imbriquées

Le type de chaque champs peut être lui-mêmeune structure.

typedef struct{ int jours ;

int mois ;int annee ;

} date ;

typedef struct{ int code ;

char nom[20] ;char prenom [20] ;date dtn ;

} etudiant ;

18/02/2018 Khaled Hassine 24

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 7

Structures imbriquées …

18/02/2018 Khaled Hassine 25

struct Livre{char titre[80];char auteur[80];float prix;};

struct Livre{char titre[80];char auteur[80];float prix;};

struct Date{int jour;int mois;int an;};

struct Date{int jour;int mois;int an;};

struct Membre{char nom[80];char adresse[200];int numero;float amende[10];struct Date creation;};

struct Membre{char nom[80];char adresse[200];int numero;float amende[10];struct Date creation;};

struct Pret{ struct Livre b;struct Date d;struct Membre *p;};

struct Pret{ struct Livre b;struct Date d;struct Membre *p;};

Structures dans des structures

18/02/2018 Khaled Hassine 26

struct Membre{char nom[80];char adresse[200];int numero;float amende[10];struct Date emprunt;struct Date creation;};

struct Membre{char nom[80];char adresse[200];int numero;float amende[10];struct Date emprunt;struct Date creation;}; struct Membre m = {

“Foulen",”rue de la …..",42,{ 0.0 },{ 0, 0, 0 },{ 5, 2, 2001 }};

struct Membre m = {“Foulen",”rue de la …..",42,{ 0.0 },{ 0, 0, 0 },{ 5, 2, 2001 }};

struct Date{int jour;int mois;int an;};

struct Date{int jour;int mois;int an;};

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 27

Utilisation d'une structure

Deux manières d'utilisation d’une structure : individuellement sur chacun de ses champs, de manière "globale'' sur l'ensemble de la structure.

Exemple à adopter : Type enreg = Enregistrement

Entier : numero;Entier : qte;Réel : prix;

Fin Enregistrementenreg art1, art2, *art3 ;

18/02/2018 Khaled Hassine 28

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 8

Utilisation individuelle des champs d'unestructure

Chaque champ d'une structure peut être manipulé commen'importe quelle variable du type correspondant.

La désignation d'un champ se note en faisant suivre le nomde la variable structure de l'opérateur ''point'' (.) suivi dunom du champ tel qu'il a été défini dans le modèle (le nomdu modèle lui-même n'intervenant d'ailleurs pas).

La priorité de l'opérateur ''.'' est très élevée, de sortequ'aucune des expressions utilisant les champs d’unestructure ne nécessite des parenthèses.

18/02/2018 Khaled Hassine 29

Utilisation globale d'une structure

L'opérateur d'affectation et l'opérateur d'adresse & sontles seuls opérateurs s'appliquant à une structure (demanière globale) à une structure définie à partir dumême modèle.

Par exemple, on peut écrire :artl art2;art3 &art1;

L’affectation artl art2 remplace avantageusement :art1.numero art2.numero ;art1.qte art2.qte ;art1.prix art2.prix ;

18/02/2018 Khaled Hassine 30

Remarques

Une affectation globale n'est possible que si les structures ont étédéfinies avec le même nom de modèle; en particulier, elle estimpossible avec des variables ayant une structure analogue maisdéfinies sous deux noms différents.

Aucune comparaison n’est possible sur les structures. Pour saisir une variable structure, on doit saisir les champs membres

de cette structure. Une structure d’enregistrement peut être traitée globalement à

seulement deux occasions : l’opérateur & pour obtenir l’adresse d’une variable de type enregistrement, l’opérateur d’affectation pour copier le contenu d’une variable de type

enregistrement dans une autre.

18/02/2018 Khaled Hassine 31

Initialisation des structures en C

Les règles d'initialisation des structures sont les mêmes que tous lestypes de variables : En l'absence d'initialisation explicite, les structures de classe ''statique" sont, par

défaut, initialisées à zéro; celles possédant la classe "automatique'' ne sont pasinitialisées par défaut (elles contiendront donc des valeurs aléatoires).

Il est possible d'initialiser explicitement une structure lors de sa déclaration. On nepeut toutefois employer que des constantes ou des expressions constantes et celaaussi bien pour les structures statiques que pour les structures automatiques (alors que,pour les variables scalaires automatiques, il était possible d'employer une expressionquelconque)

Exemple d'initialisation de la structure artl:struct enreg art1 = { 100, 285, 2000 };

Il est possible d'omettre certaines valeurs.

18/02/2018 Khaled Hassine 32

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 9

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 33

Contenu des structures

Chacun des champs d'une structure peut être untype absolument quelconque : pointeur,

tableau,

structure,

...

De même, un tableau peut être constituéd'éléments qui sont eux- mêmes des structures.

18/02/2018 Khaled Hassine 34

Structures comportant des tableaux

Soit le modèle de la structure suivante :

Personne = Enregistrement

Caractère nom[30] ;

Caractère prenom [20] ;

Réel heures [31] ;

Fin Enregistrement

Persone employe, courant ;

18/02/2018 Khaled Hassine 35

Structures comportant des tableaux

employe.heures[4] : désigne le cinquième élément du tableau heures de lastructure employe. Il s'agit d'un élément de type réel. Notez que, malgré lespriorités identiques des opérateurs . et [], leur utilisation de gauche à droiteévite l'emploi de parenthèses.

employe.nom[0] : représente le premier caractère du champ nom de lastructure employe.

&courant.heures[4] : représente l'adresse du cinquième élément du tableauheures de la structure courant. Notez que, la priorité de l'opérateur & étantinférieure à celle des deux autres, les parenthèses ne sont pas nécessaires.

courant.nom : représente le champ nom de la structure courant, c'est-à-direplus précisément l'adresse du tableau nom.

18/02/2018 Khaled Hassine 36

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 10

Remarque

L'affectation globale n'est pas possible entredeux tableaux. Elle l'est, par contre, entre deuxstructures.

Ainsi il est possible, en créant artificiellementune structure contenant un seul champ qui est untableau, de réaliser une affectation globale entretableaux.

18/02/2018 Khaled Hassine 37

Exemple de tableaux d’enregistrements

type chanson =Enregistrement

caracrère titre[100]Réel Prixt_date date

Fin;var chanson collection[10];

Trouver l’artiste d’une chanson donnée ‘titre’i ← 0;tant que (i<10) et (collection[i].titre ≠ “titre”)fairei ← i + 1;

fin tant queSi i = 10 alors Ecrire “enregistrement inexistant”

sinon ….

18/02/2018 Khaled Hassine 38

Tableaux des structures en C

Voyez ces déclarations :struct point { char nom ;

int x ;

int y ; };

struct point courbe[50];

La structure point représente un point d'un plan défini par son nom (caractère) et ses deuxcoordonnées.

courbe pourrait servir à représenter un ensemble de 50 points du type point.

point est un nom de modèle de structure, tandis que courbe représente effectivement un''objet "tableau de 50 éléments du type point".

courbe[10].nom représente le nom du point de rang 10 du tableau courbe. Il s'agit doncd'une valeur de type char.

La notation : courbe.nom[i] n’a pas de sens.

courbe[i].x représente la valeur du champ x de l’élément de rang i de courbe.

18/02/2018 Khaled Hassine 39

Tableau de structures en C : exemple denombre complexe

On peut déclarer un tableau de structure de lamême manière que de déclarer un tableau detype simple.

Exemple : struct complexe N[4] ;

Partie réelle Partie

imaginaire

Partie réelle Partie

imaginaire

Partie réelle Partie

imaginaire

Partie réelle Partie

imaginaire

N[0] N[1] N[2] N[3]

18/02/2018 Khaled Hassine 40

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 11

Exemple complet de tableaud’enregistrement en C

#include <stdio.h>struct Fiche_etudiant

{ char nom[25];char prenom[25];int age;char sexe;int matricule; };

struct Fiche_etudiant Ensemble_des_fiches[50];void main(){ int Nombre_de_fiches = 0;

char test;

18/02/2018 Khaled Hassine 41

Exemple complet de tableaud’enregistrement en C

for (Nombre_de_fiches = 0; Nombre_de_fiches < 50; Nombre_de_fiches++){ printf("\nVoulez-vous entrer les données de la %d fiche (O ou N) ? ",

Nombre_de_fiches);scanf(" %c", &test);if(test == 'N' || test == 'n') break;scanf("%s%s%i%c%i",

Ensemble_des_fiches[Nombre_de_fiches].nom,Ensemble_des_fiches[Nombre_de_fiches].prenom,&Ensemble_des_fiches[Nombre_de_fiches].age,&Ensemble_des_fiches[Nombre_de_fiches].sexe,&Ensemble_des_fiches[Nombre_de_fiches].matricule);

}

18/02/2018 Khaled Hassine 42

Exemple complet de tableaud’enregistrement en C

for (int i = 0; i < Nombre_de_fiches; i++){

printf("\n%s %s %d %c %d",Ensemble_des_fiches[i].nom,Ensemble_des_fiches[i].prenom,Ensemble_des_fiches[i].age,Ensemble_des_fiches[i].sexe,Ensemble_des_fiches[i].matricule);

}}

18/02/2018 Khaled Hassine 43

Structures et Pointeurs

On peut déclarer des pointeurs sur des structures. Elle estnotamment nécessaire lorsque la structure est unparamètre modifiable par une fonction.

Exemple :struct enreg *pe1 ; /*pointeur sur une structure enreg*/Si pe1 = &art1 alors (*pe1) et art1 sont équivalents.

Pour accéder à un membre (membre) d’unestructure (pointée par pt: En utilisant l’opérateur . : (*pt).membre Accès en utilisant l’opérateur spécial ->i : pt->membre

18/02/2018 Khaled Hassine 44

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 12

Exemple de pointeur surenregistrement en C

typedef struct {int no_compte ;char etat ;char nom[80];float solde;struct date dernier_versement;} cpt ;

cpt c1 , * pc;/*c1 est de type cpt, pc est un pointeur sur une variable detype cpt*/

18/02/2018 Khaled Hassine 45

Exemple de pointeur sur enregistrement enC

pc = &c1; *pc.no_compte = ... (*pc).no_compte = ... pc->no_compte = ...

18/02/2018 Khaled Hassine 46

Incorrect car . est plusprioritaire que *

Cas des tableaux et des pointeurs

Manipulation des enregistrements

Introduction

Enregistrement et fonction

PLAN

Déclaration des enregistrements

18/02/2018 Khaled Hassine 47

Passer des structures commeparamètres de fonction

Une structure peut être passée, comme touteautre variable, par valeur ou par adresse : Passer par valeur : simple copie des champs en

entrée.

Passer par adresse : toute modification est reproduitesur les champs.

18/02/2018 Khaled Hassine 48

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 13

Transmission d'une structure par adresse enargument d'une fonction

L'opérateur "." ne convient plus au sein du sous-programme car il supposecomme premier opérande un nom de structure et non une adresse.

Deux solutions possibles : adopter une notation telle que (*argument).champ ou pour désigner les champs

de la structure dont l’adresse est passée en paramètre. faire appel à l’opérateur -> , lequel permet d'accéder aux différents champs d'une

structure à partir de son adresse de début.

On préférera toujours le passage par référence, qui évite la duplication dela structure sur la pile (opération qui peut être couteuse, voire impossible sila structure occupe une taille mémoire importante).

18/02/2018 Khaled Hassine 49

Exemple de transmission d'une structure parvaleur en argument d'une fonction

typedef struct

{ int a;

double b;

} enreg;

void fct (enreg s)

{ s.a = 0; s.b=1;

printf ("\nDans la fonction : %d %6.3f", s.a, s.b);

}

void main (void)

{ enreg x ;x.a=1; x.b=12.5;

printf ("\nAvant l'appel\t : %d %6.3f",x.a,x.b);

fct (x);

printf ("\nApres l'appel\t : %d %6.3f", x.a, x.b);

}

18/02/2018 Khaled Hassine 50

Exemple de transmission d'une structurepar référence en argument d'une fonction

typedef struct{ int a;

double b;} enreg;void fct (enreg *s){ s->a = 0; s->b=1;

printf ("\nDans la fonction : %d %6.3f", s->a, s->b);}int main (void){ enreg x; x.a = 1; x.b = 12.5;

printf ("\nAvant l'appel\t : %d %6.3f",x.a,x.b);fct (&x);printf ("\nApres l'appel\t : %d %6.3f", x.a, x.b);

}

18/02/2018 Khaled Hassine 51

Structures et fonctions : exemple 1

float ajoute_au_compte(float solde1, float somme1) {solde1 = solde1+somme1;return (solde1);

}void main () {......cpt c1;c1.solde = 0.;ajoute_au_compte(c1.solde,1000.0);printf("%f\n",c1.solde); /*-> 0.000000*/c1.solde=ajoute_au_compte(c1.solde,1000.0);printf("%f\n",c1.solde); /* -> 1000.000000*/

18/02/2018 Khaled Hassine 52

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 14

Structures et fonctions : exemple 2

void ajoute_au_compte (float * solde1, float somme1) {*solde1 = *solde1+somme1;

}

void main () {......cpt c1;c1.solde = 0.;ajoute_au_compte(&(c1.solde),1000.0); /* ou &c1.solde */printf("%f\n",c1.solde); /*-> 1000.000000*/

18/02/2018 Khaled Hassine 53

Structures et fonctions : exemple 3 Un argument de fonction peut-

être de type structurefloat ajoute_au_compte(cpt c, floatsomme1){ return(c.solde+somme1);}void main (){ cpt c1;c1.solde = 0;ajoute_au_compte(c1,1000.0);printf("%f\n",c1.solde); /* 0*/

ou pointeur sur structurevoid ajoute_au_compte (cpt * c,float somme1){c->solde = c->solde + somme1;}void main (){ cpt c1;c1.solde = 0;ajoute_au_compte(&c1 ,1000.0);printf("%f\n",c1.solde); /*1000*/

18/02/2018 Khaled Hassine 54

Structures et fonctions : exemple 3

La valeur de retour d'une fonction peut être une structurecpt ajoute_au_compte(cpt c, float somme1){ cpt c2;

c2=c;c2.solde=c.solde+somme1;return(c2);

}void main (){ ......cpt c1;c1.solde = 0.;c1=ajoute_au_compte(c1,1000.0);printf("%f\n",c1.solde); /*1000.0*/

18/02/2018 Khaled Hassine 55

Application : nombres complexes

Ecrire les sous-programmes permettant de : saisir un nombre complexe z1.

afficher les parties réelle et imaginaire du nombrez1.

afficher les parties réelle et imaginaire du nombre z2image de z1 par symétrie centrale.

multiplier 2 nombres complexes z1, z2 passés enparamètres.

18/02/2018 Khaled Hassine 56

Faculté des Sciences de GabesDépartement d’informatiqueCours ASD II

18/02/2018

LFSI 1 – LARI 1 15

18/02/2018 Khaled Hassine 57