Cours C Chap 3 4 5 PDF

Summary

This document contains lecture notes on C programming for undergraduate-level students, specifically covering Chapters 3, 4, and 5, encompassing topics such as arrays, structures, pointers, and functions.

Full Transcript

Prof : M.QBADOU Programmation En Langage C Algorithmique & Programmation langage C Chaps 3 – 4 - 5 Les Tableaux,...

Prof : M.QBADOU Programmation En Langage C Algorithmique & Programmation langage C Chaps 3 – 4 - 5 Les Tableaux, Les structures, Les pointeurs et Les fonctions Cours TD TP 1 Prof : M.QBADOU Sommaire Chap III : Les tableaux et les structures de données  Les Tableaux : Déclaration, Accès  Les Enregistrements : Déclaration, Accès Algorithmique & Programmation langage C Chap IV : Les Pointeurs et allocation dynamique de mémoire  Définition d’un pointeur  Déclaration d’un pointeur  Règles d’utilisation des pointeurs  Arithmétique des pointeurs  Pointeurs sur des structures  Fonction d’allocation de mémoire 2 Prof : M.QBADOU Sommaire Chap V : Les fonctions  Déclaration d’une fonction  Définitions d’une fonction Algorithmique & Programmation langage C  appel d’une fonction  Exemple de fonctions standards  Tableau transmis en argument  Pointeur sur des fonctions  Fonctions récursives 3 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Les tableaux Type tableau Un type tableau est une représentation abstraite d’un ensemble de données de même type. Un type tableau est créé par : Algorithmique & Programmation langage C typedef nom_type_elt nom_type_Tableau[Taille1][Taille2][…] ; Exemples Pour générer les types tableaux nommés tvecteur et tmatrice de 4 réels et de 3x3 réels : typedef float tvecteur ; typedef float tmatrice ; Pour générer les types tableaux nommés tchaine et tlisteTexte qui représentent respectivement les textes de longueur 30 caractères et les listes de 10 textes de 30 caractères chacun : typedef char tchaine ; typedef tchaine tlisteTexte ; Remarque On peut construire des types de dimension supérieure à 2, mais pratiquement on se limite à la dimension 2. 4 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Déclaration de variables tableaux Vecteur nom_type _elt nom_var_vect[Taille]={V1,V2,…}; nom_type_vect nom_var_vect={V1,V2,…}; Algorithmique & Programmation langage C Exemples char Ref ="Com1"; float Notes ; Ou bien Ref typedef char tchaine; C o m 1 \0 typedef float tnotes; Notes A001 A002 A003 A004 A005 tchaine Ref="Com1" ; Notes Notes[ 1 ] Notes[ 2 ] tnotes Notes; A006 A00A A00E Matrice Une variable matrice peut être déclarée et initialisée par : nom_type_elt nom_var_mat[Taille1][Talle2]={{V11,V12,…},{…},….,{…}}; Ou bien : nom_type_mat nom_var_mat={{V11,V12,…},{…},….,{…}}; 5 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Exemple Tableau des ventes trimestrielles pour les 2 dernières années float Ventes ; ou bien typedef float tventes; tventes Ventes; Algorithmique & Programmation langage C Ventes Ventes Ventes Ventes Ventes Ventes Ventes Ventes Ventes Ventes Ventes Remarque : Le nom d’une variable tableau désigne toujours une adresse constante : celle du premier élément du tableau. Par conséquent si T1 et T2 sont deux variables tableaux , l’écriture suivante T1= T2 n’est pas possible et engendre une erreur. Déclaration d’un tableau de Constantes const type nom_const[taille] = {val1,Val2,…} ,… ; Exemple const float Ux = {1,0,0}, Uy[ ]={0,1,0}, Uz[ ]={0,0,1} ; 6 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Accès aux éléments d’un tableau Cas d’un vecteur Pour un tableau à une seule dimension, les éléments sont indicés à partir de zéro. Ainsi l’accès à l’élément d’indice i se fait par : Pour saisir une donnée dans cet élément Nom_Var_Tab[i] Algorithmique & Programmation langage C scanf("…" ,&Nom_Var_Tab[i]) ; Pour affecter à cet élément, on écrit Pour afficher le contenu de cet élément Nom_Var_Tab[i] = Expression ; printf("…" ,Nom_Var_Tab[i]) ; Cas d’une matrice Pour un tableau à deux dimensions, les lignes et les colonnes sont indicées à partir de zéro. Ainsi l’accès à l’élément de la ligne i et de la colonne j se fait par : Nom_Var_Tab[i][j] Pour affecter à cet élément, on écrit Pour afficher le contenu de cet élément Nom_Var_Tab[i][j] = Expression ; printf("…" ,Nom_Var_Tab[i][j]) ; Pour saisir une donnée dans cet élément scanf("…" ,&Nom_Var_Tab[i][j]) ; 7 Prof : M.QBADOU Chap 3 : Les tableaux et les structures II. Les Structures Type structuré (enregistrement) Un type structuré est une définition abstraite d’un ensemble de données hétérogènes (ne sont pas tous de même type) caractéristiques d’une entité réelle (objet). Un type structuré est obtenu par : typedef struct nom_struct { type_1 nomChamp_1 ; Algorithmique & Programmation langage C … type_n nomChamp_n ; } Nom_type_structure ; Remarque : Le type d’un champ de la structure peut être simple ou à son tour un type construit. Exemples Le type Complexe composé de la partie Le type Employé caractérisé par un matricule, un réelle et la partie imaginaire : nom, une date d’embauche et un salaire : typedef struct Tcomplexe { typedef struct { float Preel ; int Matricule ; float Pimag; char Nom; struct {int jour,mois,annee;}DateEmb; } tcomplexe ; float Salaire ; } temploye ; 8 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Exemple de type tableau de structure Le type liste d’étudiant qui représente une classe de 20 étudiants : typedef struct { int Matricule ; char Nom; } tetudiant ; Algorithmique & Programmation langage C typedef tetudiant tliste_etudiant; Exemple de type structuré composé de tableau Le type Facture qui représente en plus des données propres à une facture, une liste de produits. On suppose que le nombre de produits par facture est limité à 20. typedef struct { typedef struct { int jour,mois,annee ; int CodeClient ; } tdate ; char NomClient; typedef struct { char AdresClient;} tclient ; int Reference ; typedef struct { char Designation; int NumFacture ; float Prix; tdate DateFacture ; }tproduit ; tclient clt; typedef tproduit tliste_produit; tliste_produit Articles ;} tfacture ; 9 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Exercice1 Ecrire les modèles de structures qui décrivent une bibliothèque qui est caractérisée par : Un nom , Une adresse, Un tél , Un émail Une liste de livres pouvant contenir un maximum de 1000 livres. Chaque livre est défini par : Un titre, Une référence, Un auteur, Un éditeur, Une date d'édition, un nombre de pages et une langue. Algorithmique & Programmation langage C On aimerai définir chaque auteur par son nom , son sexe et sa nationalité. Réponse typedef struct { typedef struct { int jour,mois,annee ; char nom,adresse,tel; } tdate ; char email; typedef struct { tlivre livres; char nom,sexe, nationalite; } tbiblio ; }tauteur ; typedef struct { char ref,titre,resume ,editeur,langue; int nbrepage; tdate dateedition; Tauteur auteur; }tlivre; 10 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Exercice2 1. Ecrire un modèle de structures qui décrit un matériau caractérisé par ses caractéristiques mécaniques et physiques. 2. Une poutre est un solide élancé dont une dimension, la longueur, est très supérieure aux deux autres (section fine). En considérant les poutres à section rectangulaire et en Algorithmique & Programmation langage C utilisant le modèle de structure Matériau, donner un modèle de structure poutre. Réponse Typedef struct { struct Poutre { char nom; char nom; float densite; //en kg/m^3 float longueur; // en mètres float moduleYoung;//en Pa(Pascal) float hauteur; // en mètres float limiteElastique;//en Pa float largeur; // en mètres float coefficientPoisson;//sans unité struct Materiau materiau; float conductiviteThermique;//en W/(m*K) }; }tmateriau; 11 Prof : M.QBADOU Chap 3 : Les tableaux et les structures Variables structurée Une variable structurée peut être déclarée de plusieurs façons : Façon 1 Façon 2 struct nom_struct { struct nom_struct { type_1 nomChamp_1 ; type_1 nomChamp_1 ; … … type_n nomChamp_n ; Algorithmique & Programmation langage C type_n nomChamp_n ; }; } NomVar 1,NomVar2, … ; … struct nom_struct NomVar 1,NomVar2, …; Façon 3 typedef struct nom_struct { type_1 nomChamp_1 ; … type_n nomChamp_n ;}Nom_type_structure; … Nom_type_structure NomVar 1,NomVar2, …; typedef struct { Une variable structurée peut être initialisée int Ref; lors de sa déclaration en plaçant les valeurs des champs entre accolades comme est char Nom; indiqué dans l’exemple suivant : float Prix;}tproduit; tproduit P1={1,"Disque Dur",1500}, P2; 12 Prof : M.QBADOU Chap 3 : Les tableaux et les structures P1 P2 1 Disque Dur 1500 P1.Ref P1.Nom P1.Prix P2.Ref P2.Nom P2.Prix Remarque : Si X et Y sont deux variables structurées de même type, l’écriture X=Y est possible et permet de copier champ par champ, les valeurs des champs de Y dans ceux de X. Algorithmique & Programmation langage C Déclaration de Constantes structurée const type_structure nom_const = {val1,Val2,…} ,… ; Exemple const tcmplexe Nul = {0,0}, ImgPur = {0,1} ; Accès aux champs d’une variable structurée L’accès à u champs d’une variable structurée se fait par : Nom_Var_Str.NomChamp Pour affecter à cet élément, on écrit Nom_Var_Str.NomChamp = Expression ; Pour saisir une donnée dans cet élément scanf("…" ,&Nom_Var_Str.NomChamp) ; Pour afficher le contenu de cet élément 13 printf("…" ,Nom_Var_Str.NomChamp) ; Prof : M.QBADOU Chap 3 : Les tableaux et les structures Application Application sur le calcul des polynômes : Somme de deux polynômes //Saisie de P puts("Saisie de P : "); Algorithmique & Programmation langage C #include printf("entre de degré : "); #include scanf("%d",&P.d); for(i=0;isuivant; free(s); } } 65 Prof : M.QBADOU Chap 5 : Les fonctions opération d’affichage Pour afficher la liste, il faut : Créer un pointeur s et le faire pointer sur la tête Modifier la liste pour qu’elle pointe sur la cellule suivante Algorithmique & Programmation langage C Libérer la mémoire du bloc pointé par s liste a b c d valeur d’adresse NULL s void supprimerTete(Tliste *ptrList ){ if(*ptrList){ Tcellule *s=*ptrList; *ptrListe=s->suivant; free(s); } } 66 Prof : M.QBADOU Chap 5 : Les fonctions 9.2. Polynomes Type tpolynome typedef struct { int degre ; double *coefficients ; Algorithmique & Programmation langage C }tpolynome ; Fonction sommePoly tpolynome *sommePoly(tpolynome *p, tpolynome *q){ Tpolynome *s=(tpolynome *)malloc(sizeof(tpolynome)); int i, min=p→degreq→degre?p→degre:q→degre; S→coefficients=(double *)malloc((s→degre+1)*sizeof(double)); for(i=0;i

Use Quizgecko on...
Browser
Browser