Les variables, telles que nous les avons vues dans les chapitres précédents, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de très nombreux programmes, on a besoin d'avoir plusieurs données du même type et qui jouent quasiment le même rôle. Pensez par exemple à la liste des utilisateurs d'un site web, cela représente plusieurs variables de type string.
L’utilisation des variables distinctes, dans ce cas, seraient beaucoup trop lourdes à gérer. Heureusement, le C++ propose un moyen simple de regrouper ces données dans un seul support. Il s’agit des tableaux.
Les tableaux sont des structures de données constituées d'un certain nombre d'éléments de même type. Ils correspondent aux vecteurs et matrices en mathématiques. Un tableau est caractérisé par sa taille et par le type de ses éléments.
Dans ce chapitre, je vais vous apprendre à manipuler deux sortes de tableaux :
Les tableaux statiques : ceux dont la taille est connue à l'avance, elle est donc figée une fois pour toute et ne peut pas être modifiée en cours d'exécution du programme.
Les tableaux dynamiques : ceux dont la taille peut varier au cours de l'exécution du programme.
Les chaînes de caractères sont déclarées en C++ comme tableaux de caractères et permettent l'utilisation d'un certain nombre de notations et de fonctions spéciales. Les particularités des tableaux de caractères seront traitées séparément à la fin de ce chapitre.
Les variables, telles que nous les avons vues dans les chapitres précédents, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de très nombreux programmes, on a besoin d'avoir plusieurs données du même type et qui jouent quasiment le même rôle. Pensez par exemple à la liste des utilisateurs d'un site web, cela représente plusieurs variables de type string.
L’utilisation des variables distinctes, dans ce cas, seraient beaucoup trop lourdes à gérer. Heureusement, le C++ propose un moyen simple de regrouper ces données dans un seul support. Il s’agit des tableaux.
Les tableaux sont des structures de données constituées d'un certain nombre d'éléments de même type. Ils correspondent aux vecteurs et matrices en mathématiques. Un tableau est caractérisé par sa taille et par le type de ses éléments.
Dans ce chapitre, je vais vous apprendre à manipuler deux sortes de tableaux :
Les tableaux statiques : ceux dont la taille est connue à l'avance, elle est donc figée une fois pour toute et ne peut pas être modifiée en cours d'exécution du programme.
Les tableaux dynamiques : ceux dont la taille peut varier au cours de l'exécution du programme.
Les chaînes de caractères sont déclarées en C++ comme tableaux de caractères et permettent l'utilisation d'un certain nombre de notations et de fonctions spéciales. Les particularités des tableaux de caractères seront traitées séparément à la fin de ce chapitre.
la plupart des programmes informatique sont des programmes complexes. Ils comportent des dizaines de milliers de lignes et les grosses applications en comportent des millions. Si l'on garde tout dans une seule fonction, la fonction main() par exemple, il va être très difficile de s'y retrouver. Il serait certainement plus simple de découper ce programme en fonctions. Chaque fonction est destinée à effectuer une tâche précise et renvoie généralement un résultat. Découper son programme en fonctions permet de s'organiser.
En plus, si vous êtes plusieurs développeurs à travailler sur le même programme, vous pourrez vous partager plus facilement le travail : chacun s'occupe d’une fonction différente.
Et ce n'est pas tout ! Prenons par exemple le calcul de la racine carrée, que nous avons vu précédemment. Si vous créez un programme de maths, il est bien possible que vous ayez besoin, à plusieurs endroits, d'effectuer des calculs de racines. Avoir une fonction sqrt() va nous permettre de faire plusieurs de ces calculs sans avoir à recopier le même code à plusieurs endroits. On peut réutiliser plusieurs fois la même fonction et c'est une des raisons principales d'en écrire.
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
Introduction....................................................................................
Les variables...................................................................................
1. Objectif ....................................................................................
2. Déclaration ...............................................................................
3. Type des variables ....................................................................
4. L’instruction d’affectation .......................................................
Les variables ....................................................................................
Correction TD 1 ...............................................................................
Les structures de contrôle ................................................................
1. Objectif ....................................................................................
2. Les structures de contrôle: .......................................................
3. Les structures itératives ............................................................
Les structures de contrôle ................................................................
Correction TD 2 ...............................................................................
Les tableaux à une dimension ..........................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
4. Algorithmes de tri ....................................................................
Les tableaux à une dimension.......................................................
Les tableaux à deux dimensions ......................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
Les tableaux à deux dimensions ......................................................
Les fonctions ....................................................................................
Objectif ............................................................................................
Les enregistrements .........................................................................
Les fichiers séquentiels ....................................................................
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
la plupart des programmes informatique sont des programmes complexes. Ils comportent des dizaines de milliers de lignes et les grosses applications en comportent des millions. Si l'on garde tout dans une seule fonction, la fonction main() par exemple, il va être très difficile de s'y retrouver. Il serait certainement plus simple de découper ce programme en fonctions. Chaque fonction est destinée à effectuer une tâche précise et renvoie généralement un résultat. Découper son programme en fonctions permet de s'organiser.
En plus, si vous êtes plusieurs développeurs à travailler sur le même programme, vous pourrez vous partager plus facilement le travail : chacun s'occupe d’une fonction différente.
Et ce n'est pas tout ! Prenons par exemple le calcul de la racine carrée, que nous avons vu précédemment. Si vous créez un programme de maths, il est bien possible que vous ayez besoin, à plusieurs endroits, d'effectuer des calculs de racines. Avoir une fonction sqrt() va nous permettre de faire plusieurs de ces calculs sans avoir à recopier le même code à plusieurs endroits. On peut réutiliser plusieurs fois la même fonction et c'est une des raisons principales d'en écrire.
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
Introduction....................................................................................
Les variables...................................................................................
1. Objectif ....................................................................................
2. Déclaration ...............................................................................
3. Type des variables ....................................................................
4. L’instruction d’affectation .......................................................
Les variables ....................................................................................
Correction TD 1 ...............................................................................
Les structures de contrôle ................................................................
1. Objectif ....................................................................................
2. Les structures de contrôle: .......................................................
3. Les structures itératives ............................................................
Les structures de contrôle ................................................................
Correction TD 2 ...............................................................................
Les tableaux à une dimension ..........................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
4. Algorithmes de tri ....................................................................
Les tableaux à une dimension.......................................................
Les tableaux à deux dimensions ......................................................
1. Objectif ....................................................................................
2. Définition .................................................................................
3. Exemple ...................................................................................
Les tableaux à deux dimensions ......................................................
Les fonctions ....................................................................................
Objectif ............................................................................................
Les enregistrements .........................................................................
Les fichiers séquentiels ....................................................................
Objectif général : Développer en orienté objet avec Python
Objectifs opérationnels :
- Organiser le code grâce aux classes
- Sécuriser une classe avec l’encapsulation
- Réutiliser et factoriser du code avec l’héritage
- Invoquer des méthodes de même nom, quel que soit le type d'objet sur lequel elles opèrent, sans avoir à effectuer au préalable une vérification de type grâce au polymorphisme
Cours C Avancé chapitre 2 et chapitre.pdfc79024186
Ce pdf permet d'avoir des connaissances vagues sur le langage de programmation C, ce qui pourrait s'avérer nécessairement de nos jours. Plusieurs points seront utilisés dans ce document.
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
Ministère de l’Éducation de Tunisie
Direction Générale des Programmes
et de la Formation Continue
Le langage de programmation choisi pour implémenter les solutions algorithmiques est le
langage de programmation Python.
Chapitre 8 - Les tableaux et les pointeurs.pdfShiniGami0o0
In mathematics and computer science, an algorithm is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing calculations and data processing.
Newsletter SPW Agriculture en province du Luxembourg du 03-06-24BenotGeorges3
Les informations et évènements agricoles en province du Luxembourg et en Wallonie susceptibles de vous intéresser et diffusés par le SPW Agriculture, Direction de la Recherche et du Développement, Service extérieur de Libramont.
https://agriculture.wallonie.be/home/recherche-developpement/acteurs-du-developpement-et-de-la-vulgarisation/les-services-exterieurs-de-la-direction-de-la-recherche-et-du-developpement/newsletters-des-services-exterieurs-de-la-vulgarisation/newsletters-du-se-de-libramont.html
Bonne lecture et bienvenue aux activités proposées.
#Agriculture #Wallonie #Newsletter #Recherche #Développement #Vulgarisation #Evènement #Information #Formation #Innovation #Législation #PAC #SPW #ServicepublicdeWallonie
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Formation
Suite à l'entrée en vigueur de la « Participation Financière Obligatoire » le 2 mai dernier, les règles du jeu ont changé !
Pour les entreprises, cette révolution du dispositif est l'occasion de revoir sa stratégie de formation pour co-construire avec ses salariés un plan de formation alliant performance de l'organisation et engagement des équipes.
Au cours de ce webinar de 20 minutes, co-animé avec la Caisse des Dépôts et Consignations, découvrez tous les détails actualisés sur les dotations et les exonérations, les meilleures pratiques, et comment maximiser les avantages pour les entreprises et leurs salariés.
Au programme :
- Principe et détails de la « Participation Financière Obligatoire » entrée en vigueur
- La dotation : une opportunité à saisir pour co-construire sa stratégie de formation
- Mise en pratique : comment doter ?
- Quelles incidences pour les titulaires ?
Webinar exclusif animé à distance en coanimation avec la CDC
2. Objectifs du cours
Ce cours a pour objectif de prolonger les acquis du premier semestre dans
l’élément algorithmique et programmation I, en introduisant de nouvelles
structures de données linéaires et arborescentes avec différentes
implémentations (contiguë et chainée).
Nous commençons tout d’abord par introduire la notion des types
d’éléments abstraits, ainsi que le principe de la récursivité.
Ensuite, nous couvrons les structures de données linéaires : les listes, les
files et les piles et leurs applications à travers l’évaluation des expressions
arithmétiques.
Enfin, les structures de données arborescentes sont étudiées (arbres,
graphes).
2
3. Plan du cours
Chapitre 1: Les enregistrements
Chapitre 2: La récursivité
Chapitre 3: Les variables dynamiques
Chapitre 4: Les listes chainées
Chapitre 5: Les piles et les files
Chapitre 6: Les arbres
3
5. Objectifs du chapitre
5
Dr. Fadoua.BOUAFIF
A la fin du chapitre, les étudiants seront en mesure de:
- Définir le type enregistrement en algorithmique et en langage C
- Nommer les opérations sur les enregistrements
- Déterminer le tableau d’enregistrement
- Arranger les pointeurs et les enregistrements
6. Plan du chapitre
1) Introduction
2) Définition
3) Déclaration
4) Manipulation des enregistrements
5) Tableaux et enregistrements
6) Pointeurs et enregistrements
7) Conclusion
6
Dr. Fadoua.BOUAFIF
7. Introduction
Les types utilisés, jusqu'à présent, sont :
des types simples, tels que:
réel,
entier,
caractère,
et le type structuré tableau qui permet de stocker plusieurs données de même type.
Il est parfois nécessaire de définir un objet qui décrit plusieurs informations de types différents. Cet
objet est alors définit à travers un type structuré appelé enregistrement ou structure.
7
Dr. Fadoua.BOUAFIF
8. Définitions
Le type enregistrement (structure) est une structure de données qui rassemble un ensemble
d'informations de types différents : simple, complexe ou même de type enregistrement, dans une
même variable.
L'information qui compose cette structure est appelée champ ou attribut.
Un enregistrement (structure) est un ensemble d'attributs.
Exemple:
8
Type Personne =Enregistrement
nom : chaine [20]
prénom : chaine [20]
CIN: entier
FinPersonne
Dr. Fadoua.BOUAFIF
Nom de
l’enregistrement
Les attributs/les champs
9. Déclaration En Algorithmique
9
Dr. Fadoua.BOUAFIF
Syntaxe Exemple
Déclaration de
l’enregistrement
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Type
Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Déclaration
variables
Var Nom_variable: Nom_structure Var: P1, P2: Personne
10. Déclaration En langage C
10
Dr. Fadoua.BOUAFIF
Syntaxe Exemple
Déclaration
de la
structure
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
Typedef struct
{
char nom[20];
char prenom[20];
int CIN ;
} Personne;
Déclaration
variables
Nom_struct Nom_variable; Personne P1, P2;
11. Remarques 11
Dr. Fadoua.BOUAFIF
En algorithmique En Langage C
La déclaration des types structures se fait dans une
section spéciale des algorithmes appelée Type, qui
précède la section des variables et succède à la
section (clause) des constantes.
La déclaration de la structure sera effectuée avant le
programme principal
Algorithme principal
Type
Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Var: P1, P2: Personne
Const: ….
Debut
…..
fin
#include <studio.h>
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
}Personne; /*N’oubliez pas ce point virgule*/
void main ( )
{
Personne P1,P2;
………
}
12. Remarque En langageC
12
Il est possible de déclarer et d’initialiser une variable structurée dans un seul et même temps :
Syntaxe
Typedef Struct
{
type1 champ1 ;
type2 champ2 ;
type3 champ3 ;
.....
typen champn ;
} NomStructure; Nom_variable = {val_champ1, val_champ2,… };
Exemple
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne; P1= {"med", " selmi", 12345678};
Dr. Fadoua.BOUAFIF
13. Activité 1
Soit un produit est caractérisé par:
Référence (entier)
Désignation (chaine de caractère)
Quantité (entier)
Prix_Unitaire (réel)
Ecrire la structure qui définie le produit en algorithmique et en langage C
Dr. Fadoua.BOUAFIF
13
14. Manipulation des enregistrements
Comme pour les tableaux, il n'est pas possible de manipuler un
enregistrement globalement,
La manipulation d'un enregistrement se fait à travers de « ses champs ».
Dr. Fadoua.BOUAFIF
14
15. Accès aux champs d’un enregistrement
15
Syntaxe:
nom_variable.nom_champ
En algorithme EN C
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var : P : Personne
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
Personne P;
Exemple:
P.Nom
P.Prenom
P.CIN
16. 16
Il est possible d'affecter une variable enregistrement dans une autre, à condition qu'ils
soient de même structure.
Tous les champs de la première variable enregistrement à affecter seront
recopiés dans les champs de l'autre variable enregistrement.
Affectation
P1= P2;
Printf ("%s %d", P1.nom, p1.CIN);
BenSaleh ali 12345678
Dr. Fadoua.BOUAFIF
En Algorithmique En C
Nom_variable valeur Nom_variable = valeur
Exemple
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne; P1= {"BenSaleh","ali",12345678};
17. 17
Lecture/Ecriture
Dr. Fadoua.BOUAFIF
En algorithme EN C
Lire(Nomvariable.champ) Scanf(‘’code format’’,& Nom_variable .champ);
ecrire(Nomvariable.champ) printf(‘’code format’’, Nom_variable .champ);
Les opérations de lecture/écriture n'acceptent que des types simples, alors on ne
peut pas lire/écrire directement une variable de type structure.
On doit lire/écrire les attributs/champs de la variable de type structure un à un
Syntaxe
18. 18
Lecture/Ecriture
Dr. Fadoua.BOUAFIF
Exemple
En algorithme EN C
Algorithme Affiche_Personne
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var : P : Personne
Debut
Ecrire("Veuillez saisir le nom ,le prenom et le
numero CIN")
Lire(P.nom, P.Prenom, P.CIN)
Ecrire("Nom:", P.nom, "Prenom:", P.Prenom,
"CIN:", P.CIN)
fin
#include<stdio.h>
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
int main()
{
Personne P;
printf("Veuillez saisir le nom, le prenom et le numero
CIN");
scanf("%s%s%d",P.nom, P.Prenom, &P.CIN)
printf(" le nom: %sn le prenom: %sn CIN:%dn",
P.nom, P.Prenom, P.CIN)
return 0; }
19. 19
Egalité ou différence (== ou !=):
On ne peut pas tester l'égalité ou la différence de deux enregistrements de même type
d'une façon globale.
La comparaison doit se faire champ par champ : le 1er champ du premier enregistrement
est comparé au premier champ du second enregistrement et ainsi de suite.
Exemple:
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
var: P1,P2: Personne
Remarques
P1=P2 écriture fausse
En algorithme
P1.nom =P2.nom
P1.CIN =P2.CIN
En C
Strcmp(P1.nom, P2.nom)
P1.CIN =P2.CIN
écriture correcte
écriture correcte
Dr. Fadoua.BOUAFIF
20. 20
Pour la manipulation des attributs de type chaîne de caractères, les fonctions prédéfinies de
manipulation des chaînes sont utilisées.
Exemple:
Typedef Struct
{
char nom [20];
char prenom [20];
int CIN;
} Personne;
P1= {"BenSaleh","ali",12345678};
Attention!!
En langage C
Personne P2;
Strcpy(P2.prenom, "alia"); // affectation du nom « alia » à P2.prenom
P2.CIN =12345679; // affectation CIN à P2.CIN
Strcmp(P1.prenom, P2.prenom); // Comparaison de deux chaines
Dr. Fadoua.BOUAFIF
21. Activité 2
Soit un étudiant est définie par son nom, son prénom et sa date de naissance(jour/mois/année)
et son moyenne
Définir la structure étudiant
Ecrire un programme qui permet de saisir et d’afficher les informations d’un étudiant
Solution
Dr. Fadoua.BOUAFIF
21
22. 22
En Algorithme En C
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Type Tab : tableau [0…N-1] de Nom_Structure
Var : T : Tab
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
Typedef NomStruct T[N];
Tableau & enregistrement
Syntaxe
Dr. Fadoua.BOUAFIF
23. Groupe G;
G [0] G[1] ………
G [1].CIN
‘Sassi’ ‘med’ 22234 ‘saleh’ ‘afef’ 11145 …
23
Tableau & enregistrement
Exemple
En algorithme En C
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Type Groupe : tableau [0…9] de Personne
Var : G : Groupe
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
Typedef Personne Groupe[10];
Groupe G;
G [0].nom
Dr. Fadoua.BOUAFIF
24. 24
Soit un étudiant est définie par son nom, son prénom et 4 notes.
Définir la structure étudiant
Ecrire un algorithme qui permet de saisir une liste de 30 étudiants
Activité 3
Dr. Fadoua.BOUAFIF
25. 25
Soit un étudiant est définie par son nom, son prénom et 4 notes.
Définir la structure étudiant
Ecrire un algorithme qui permet de saisir une liste de 30 étudiants
Activité 3
Dr. Fadoua.BOUAFIF
27. Pointeurs & enregistrements
Syntaxes (suite)
ASD II
27
En Algorithme En C
Déclaration
structure
Déclaration
variable
Accès aux
champs
Type Nom_structure = Enregistrement
Nom_champ1 : type_champ1
Nom_champ2 : type_champ2
…….
Nom_ champn : type_champ3
Fin_Nom_structure
Var: pt_structure: Nom_Structure
pt_structure.Nom_champ
Typedef Struct
{
Nom_champ1 : type_champ1;
Nom_champ2 : type_champ2;
…….
Nom_ champn : type_champ3;
} NomStruct ;
NomStruct *pt_structure;
(*pt_structure). Nom_champ;
ou pt_structureNom_champ;
Pour accéder à un champ de la structure avec une variable pointeur, nous utilisons:
En algorithme l’opérateur (.)
En C l’operateur « » ou l’opérateur (.)
28. Pointeurs & enregistrements
Exemple
ASD II
28
En algorithme En C
Algorithme Exemple_Personne #include<stdio.h>
Début
pt P
(*pt).CIN 205004
lire ( (*pt).nom)
écrire ((*pt).CIN)
Fin
var : P : Personne
pt : Personne
Type Personne=enregistrement
nom : chaine [20]
prenom : chaine [20]
CIN : entier
Fin_Personne
Typedef Struct
{
char nom[20];
char prenom[20];
int CIN;
} Personne;
int main ()
{
Personne P ; // déclaration variable enregistrement
Personne*pt ; // déclaration d’un pointeur de type enregistrement
pt=&P; // pt pointe sur l’adresse de P
(*pt).CIN=205004 ; // ou P.CIN =205004
scanf("%s", (ptnom) ); //ou scanf("%s", ((*pt).nom));
//ou scanf("%s", (P.nom));
printf(" Num_CarteId=%d", (*pt).CIN); // ou pt -> CIN ; ou P .CIN ;
return 0; }
29. 29
Ecrire un sous-programme qui permet d’afficher la liste des étudiants de
l’activité 3 en utilisant les pointeurs
Activité 3
Dr. Fadoua.BOUAFIF
30. 30
Dans ce cours nous avons :
Défini le type enregistrement (structure)
Détaillé les manipulations sur les enregistrements
Présenté le tableau d’enregistrement
Présenté l’utilisation des pointeurs sur les enregistrements
Conclusion
Dr. Fadoua.BOUAFIF