SlideShare une entreprise Scribd logo

Initiation à l'algorithmique

Abdoulaye Dieng
Abdoulaye Dieng
Abdoulaye DiengConsultant Web et Formateur en Technologies Web et en programmation informatique à Freelance

Objectif général : Acquérir les bases méthodologiques de la résolution d'un problème conduisant à la réalisation d'un programme informatique Objectifs spécifiques : Connaître les étapes de résolution d’un problème Stocker et traiter des données simples Permettre à un programme de communiquer avec l’extérieur Contrôler le flux d’exécution des instructions Traiter des données composites Définir et utiliser des procédures et des fonctions

Initiation à l'algorithmique

1  sur  55
Initiation à
l’algorithmique
M. Abdoulaye DIENG Janvier 2017
Objectif général
Acquérir les bases méthodologiques de la résolution
d'un problème conduisant à la réalisation d'un
programme informatique
2
Objectifs opérationnels
• Connaître les étapes de résolution d’un problème
• Stocker et traiter des données simples
• Permettre à un programme de communiquer avec
l’extérieur
• Contrôler le flux d’exécution des instructions
• Traiter des données composites
• Définir et utiliser des procédures et des fonctions
3
Sommaire
1. Algorithme
2. Étapes de résolution d’un
problème
3. Identificateur
4. Variable
5. Types simples
6. Notion de constante
7. Opérateurs
8. Affectation
9. Entrées/sorties
10. Structures de contrôle
11. Tableaux
12. Sous-programmes
13. Enregistrements
4
Algorithme
présentation
• Algorithme :
– du nom du mathématicien persan Al-Khwârizmî
– façon de décrire dans ses moindres détails comment
procéder pour faire quelque chose
– suite finie d’opérations ou d’instructions que l’on
applique à un nombre fini de données pour résoudre
un problème.
• Ex : résolution d’un problème arithmétique, indication
d’un trajet, recette de cuisine, …
• En informatique, l’algorithme est écrit dans un langage
proche du langage humain appelé pseudo langage.
• L’algorithme n'est pas fait pour être exécuté directement
par une machine, mais il a l'avantage d'être traduit
facilement dans tous les langages de programmation.
problème
algorithme
réflexion
programme
traduction
Al-Khwârizmî
Mathématicien persan
(780 – 850)
5
Algorithme
exemple : "préparation du thé à la sénégalaise"
• Ingrédients : paquet de thé, pot de sucre, bouteille d’eau.
• Résultat : servir des verres de thé.
• Matériel : théière, verres à thé, plateau, fourneau avec du
charbon ardent
• Actions à réaliser
1. Mettre de l’eau dans la théière
2. Mettre du thé dans la théière
3. Poser la théière sur le fourneau
4. Tant que (pas d’ébullition)
laisser la théière sur le fourneau
5. Poser la théière sur le plateau
6. Mettre du sucre dans la théière
7. Appeler Moussa, le « mousseur » de thé
8. Si (le thé est très refroidi) alors
réchauffer le thé
9. Remplir les verres de thé
10. Servir les verres de thé
Sous-algo de Moussa
Moussa reçoit la théière et les verres à thé
posés sur le plateau
pour produire de la mousse dans les verres
7.1. Remplir un verre de thé au 3/4
7.2. Faire
Transvaser ce thé d’un verre à un autre
Tant que (Il y a un verre sans mousse)
6
Publicité

Recommandé

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Examen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesExamen principal - Algorithme & Structures de données
Examen principal - Algorithme & Structures de donnéesInes Ouaz
 

Contenu connexe

Tendances

Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Aziz Darouichi
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptxOkanimegamers
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeursSana REFAI
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycéeKayl Mido
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac Amri Ossama
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Saber LAJILI
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrentsmohamed_SAYARI
 

Tendances (20)

Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptx
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeurs
 
Tp word n° 1
Tp word n° 1Tp word n° 1
Tp word n° 1
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
algorithme tronc commun lycée
algorithme tronc commun lycéealgorithme tronc commun lycée
algorithme tronc commun lycée
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3Mini projet android 2014 2015 iset nabeul sem3
Mini projet android 2014 2015 iset nabeul sem3
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrents
 

En vedette

Internet et ses services
Internet et ses servicesInternet et ses services
Internet et ses servicesAbdoulaye Dieng
 
Démarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDémarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDr Samir A. ROUABHI
 
L'entretien téléphonique
L'entretien téléphoniqueL'entretien téléphonique
L'entretien téléphoniquekeyros
 
Web-Formation - TPM
Web-Formation - TPMWeb-Formation - TPM
Web-Formation - TPMXL Groupe
 
Fiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneFiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneJeremy ABDILLA
 
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Vanksen
 
Comment réussir sa soutenance pfe
Comment réussir sa soutenance pfeComment réussir sa soutenance pfe
Comment réussir sa soutenance pfeMohamed Sahbi
 
Les fondamentaux du Leadership
Les fondamentaux du LeadershipLes fondamentaux du Leadership
Les fondamentaux du Leadershipkkassifred
 
Comment faire une présentation percutante
Comment faire une présentation percutanteComment faire une présentation percutante
Comment faire une présentation percutanteThomas Goubin
 
Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation chila emmanuel
 
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et KeynoteLes 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynotechila emmanuel
 
13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)SmartsCube
 
Communication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueCommunication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueMajida Antonios, M.Ed.
 
Lanzamiento educacion vial
Lanzamiento educacion vialLanzamiento educacion vial
Lanzamiento educacion vialmunicdg
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsMarie Bluzet Proniewski
 
Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Daniela Martinez
 
Commerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BCommerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BTechSolCom
 

En vedette (20)

Internet et ses services
Internet et ses servicesInternet et ses services
Internet et ses services
 
Démarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succèsDémarches entrepreneuriales : se lancer avec succès
Démarches entrepreneuriales : se lancer avec succès
 
L'entretien téléphonique
L'entretien téléphoniqueL'entretien téléphonique
L'entretien téléphonique
 
Web-Formation - TPM
Web-Formation - TPMWeb-Formation - TPM
Web-Formation - TPM
 
L'Innovation de Rupture
L'Innovation de RuptureL'Innovation de Rupture
L'Innovation de Rupture
 
Fiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphoneFiche pratique : techniques et comportements au téléphone
Fiche pratique : techniques et comportements au téléphone
 
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
Top 10 des applications mobiles pour tenir vos bonnes résolutions 2014
 
Comment réussir sa soutenance pfe
Comment réussir sa soutenance pfeComment réussir sa soutenance pfe
Comment réussir sa soutenance pfe
 
Les fondamentaux du Leadership
Les fondamentaux du LeadershipLes fondamentaux du Leadership
Les fondamentaux du Leadership
 
Comment faire une présentation percutante
Comment faire une présentation percutanteComment faire une présentation percutante
Comment faire une présentation percutante
 
Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation Les 12 attitudes à avoir en présentation
Les 12 attitudes à avoir en présentation
 
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et KeynoteLes 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
Les 10 astuces pour réussir sa présentation sur Powerpoint et Keynote
 
13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)13 astuces pour rater sa vie (développement personnel)
13 astuces pour rater sa vie (développement personnel)
 
Communication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphoniqueCommunication orale: Préparer un appel téléphonique
Communication orale: Préparer un appel téléphonique
 
Cours 1 -_bases_d_informatique
Cours 1 -_bases_d_informatiqueCours 1 -_bases_d_informatique
Cours 1 -_bases_d_informatique
 
Lanzamiento educacion vial
Lanzamiento educacion vialLanzamiento educacion vial
Lanzamiento educacion vial
 
Turismo alternativo
Turismo alternativoTurismo alternativo
Turismo alternativo
 
Financement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bsFinancement des associations et baisse des subventions forum 2013 ol.bs
Financement des associations et baisse des subventions forum 2013 ol.bs
 
Platafromas vituales daniela[1]
Platafromas vituales daniela[1]Platafromas vituales daniela[1]
Platafromas vituales daniela[1]
 
Commerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2BCommerce Électronique - Enjeux et tendances B2B
Commerce Électronique - Enjeux et tendances B2B
 

Similaire à Initiation à l'algorithmique

Algorithmique de base.pdf
Algorithmique de base.pdfAlgorithmique de base.pdf
Algorithmique de base.pdfWafaa Ibrihich
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
M102-Algorithmique.pdf
M102-Algorithmique.pdfM102-Algorithmique.pdf
M102-Algorithmique.pdfBadrNAIM1
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage CAbdoulaye Dieng
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfFootballLovers9
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfadeljaouadi
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013PGambette
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeInforMatica34
 

Similaire à Initiation à l'algorithmique (20)

Algorithmique de base.pdf
Algorithmique de base.pdfAlgorithmique de base.pdf
Algorithmique de base.pdf
 
langage C++
langage C++langage C++
langage C++
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
M102-Algorithmique.pdf
M102-Algorithmique.pdfM102-Algorithmique.pdf
M102-Algorithmique.pdf
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Les fondamentaux du langage C
Les fondamentaux du langage CLes fondamentaux du langage C
Les fondamentaux du langage C
 
resume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdfresume-theorique-m102-0311-6182a97340fbc.pdf
resume-theorique-m102-0311-6182a97340fbc.pdf
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
chapitre 5.pptx
chapitre 5.pptxchapitre 5.pptx
chapitre 5.pptx
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
Cours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdfCours-ALGORITHMIQUE-03.pdf
Cours-ALGORITHMIQUE-03.pdf
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’Algorithme
 
Algo inf102 2007
Algo inf102 2007Algo inf102 2007
Algo inf102 2007
 
La progr.docx
La progr.docxLa progr.docx
La progr.docx
 

Plus de Abdoulaye Dieng

Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturelAbdoulaye Dieng
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobilesAbdoulaye Dieng
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPressAbdoulaye Dieng
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API RESTAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonAbdoulaye Dieng
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchronesAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 

Plus de Abdoulaye Dieng (20)

Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Fondamentaux du Référencement naturel
Fondamentaux du Référencement naturelFondamentaux du Référencement naturel
Fondamentaux du Référencement naturel
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Panorama des Technologies mobiles
Panorama des Technologies mobilesPanorama des Technologies mobiles
Panorama des Technologies mobiles
 
Prise en main de WordPress
Prise en main de WordPressPrise en main de WordPress
Prise en main de WordPress
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à l’orienté objet en Python
Introduction à l’orienté objet en PythonIntroduction à l’orienté objet en Python
Introduction à l’orienté objet en Python
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Initiation à Bootstrap
Initiation à BootstrapInitiation à Bootstrap
Initiation à Bootstrap
 
Requêtes HTTP synchrones et asynchrones
Requêtes HTTPsynchrones et asynchronesRequêtes HTTPsynchrones et asynchrones
Requêtes HTTP synchrones et asynchrones
 
Introduction à jQuery
Introduction à jQueryIntroduction à jQuery
Introduction à jQuery
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à HTML 5
Introduction à HTML 5Introduction à HTML 5
Introduction à HTML 5
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 

Initiation à l'algorithmique

  • 2. Objectif général Acquérir les bases méthodologiques de la résolution d'un problème conduisant à la réalisation d'un programme informatique 2
  • 3. Objectifs opérationnels • Connaître les étapes de résolution d’un problème • Stocker et traiter des données simples • Permettre à un programme de communiquer avec l’extérieur • Contrôler le flux d’exécution des instructions • Traiter des données composites • Définir et utiliser des procédures et des fonctions 3
  • 4. Sommaire 1. Algorithme 2. Étapes de résolution d’un problème 3. Identificateur 4. Variable 5. Types simples 6. Notion de constante 7. Opérateurs 8. Affectation 9. Entrées/sorties 10. Structures de contrôle 11. Tableaux 12. Sous-programmes 13. Enregistrements 4
  • 5. Algorithme présentation • Algorithme : – du nom du mathématicien persan Al-Khwârizmî – façon de décrire dans ses moindres détails comment procéder pour faire quelque chose – suite finie d’opérations ou d’instructions que l’on applique à un nombre fini de données pour résoudre un problème. • Ex : résolution d’un problème arithmétique, indication d’un trajet, recette de cuisine, … • En informatique, l’algorithme est écrit dans un langage proche du langage humain appelé pseudo langage. • L’algorithme n'est pas fait pour être exécuté directement par une machine, mais il a l'avantage d'être traduit facilement dans tous les langages de programmation. problème algorithme réflexion programme traduction Al-Khwârizmî Mathématicien persan (780 – 850) 5
  • 6. Algorithme exemple : "préparation du thé à la sénégalaise" • Ingrédients : paquet de thé, pot de sucre, bouteille d’eau. • Résultat : servir des verres de thé. • Matériel : théière, verres à thé, plateau, fourneau avec du charbon ardent • Actions à réaliser 1. Mettre de l’eau dans la théière 2. Mettre du thé dans la théière 3. Poser la théière sur le fourneau 4. Tant que (pas d’ébullition) laisser la théière sur le fourneau 5. Poser la théière sur le plateau 6. Mettre du sucre dans la théière 7. Appeler Moussa, le « mousseur » de thé 8. Si (le thé est très refroidi) alors réchauffer le thé 9. Remplir les verres de thé 10. Servir les verres de thé Sous-algo de Moussa Moussa reçoit la théière et les verres à thé posés sur le plateau pour produire de la mousse dans les verres 7.1. Remplir un verre de thé au 3/4 7.2. Faire Transvaser ce thé d’un verre à un autre Tant que (Il y a un verre sans mousse) 6
  • 7. Algorithme structure(1/2) • Un algorithme est composé d’une entête et d’un corps • Dans l'entête : – nom (obligatoire) de l'algo annoncé par « Programme » – définition de types annoncée par « Type » ; – déclaration de constantes annoncée par « Constante » ; – déclaration de variables annoncée par « Variable » ; – définitions de sous programmes. • Le corps est composé : – du mot-clé « Début » ; – d'une suite d'instructions indentées ; – du mot-clé « Fin ». • Commentaires entre (* et *) : aide-mémoire aux personnes visualisant le programme 7
  • 8. Algorithme structure (2/2) Programme nomDuProgramme Type (* Définition de types *) Constante (* Déclaration de constantes *) Variable (* Déclaration de variables *) Déclaration de sous-programmes Début (* instructions du programme *) Fin Entête du programme Corps du programme 8
  • 9. Résolution d’un problème cinq étapes • Étape 1 : compréhension de l’énoncé du problème. • Étape 2 : décomposition du problème en sous-problèmes. (Étape nécessaire que si le problème initial n’est pas simple) • Étape 3 : spécification du problème ou de chaque sous-problème • Étape 4 : algorithme logique du problème ou de chaque sous- problème • Étape 5 : algorithme de programmation du problème. 9
  • 10. Résolution d’un problème compréhension de l'énoncé • Formulation ou reformulation du texte qui décrit le problème à résoudre. • Permet la compréhension du problème par soi-même : aucune ambiguïté, complétude, cohérence ? • Exemple ;-) Après 3 heures d’attente, une dame appelle sa bonne qui est allait au marché. La dame : « Mais Fatou…, c’est quoi même ? » La bonne : « Excuse-moi Madame, j’ai tout acheté sauf le total. Je suis comme ça même, à la station d’essence Total. » 10
  • 11. Résolution d’un problème décomposition • Cette étape est basée sur la stratégie « diviser pour régner ». • Commencer par décomposer le problème initial en sous-problèmes, puis chaque sous-problème en de nouveaux sous-problèmes et ainsi de suite jusqu’aux problèmes que l’on peut résoudre à partir d’opérations primitives. • Question à se poser : quelles sont les grandes étapes à réaliser ? • NB : si le problème est simple, l’étape de la décomposition n’est pas nécessaire Exemple sur l’algo du thé 1) Préparer la solution (eau + thé) 2) Bouillir la solution 3) Sucrer la solution 4) Produire de la mousse de thé 5) Servir le thé 11
  • 12. Résolution d’un problème spécification - principe Pour chaque problème simple, déterminer : 1) données d’entrée : venant de l’extérieur et étant nécessaires au problème ; Exemple du sous-problème « préparer la solution (eau + thé) » : eau et thé 2) données de sortie ou résultat attendu du problème par l’extérieur ; Exemple du sous-problème « préparer la solution (eau + thé) » : Théière remplie d’eau et de thé 3) traitement à faire : formules, équations, fonctions, constantes et autres outils nécessaires à l’obtention des données de sortie ou du résultat attendu à partir des données d’entrée. Exemple du sous-problème « préparer la solution (eau + thé) » : matériel et actions indispensables à l’obtention de la théière remplie d’eau et de thé 12
  • 13. Résolution d’un problème spécification - exemple Enoncé du problème : Algorithme qui affiche la somme de deux entiers donnés par l’utilisateur • Données en entrée – deux entiers (terme1 et terme2) • Résultat attendu – Afficher la somme des deux entiers (somme) • Traitement 1) lire() pour mémoriser terme1 et terme2 2) La formule : somme = terme1 + terme2 3) ecrire() pour afficher somme 13
  • 14. Résolution d’un problème algorithme logique - principe • Constitué uniquement des instructions (en pseudo-langage) indispensables au traitement : pas d’entête ni instruction superflue • Prévoir éventuellement un lexique des identificateurs de données utilisées. NB : avec des identificateurs explicites, le lexique est inutile 14
  • 15. Résolution d’un problème algorithme logique - exemple • Rappel du traitement de l’exemple précédent 1) lire() pour mémoriser terme1 et terme2 2) La formule : somme = terme1 + terme2 3) ecrire() pour afficher somme • Algorithme logique de l’exemple précédent lire(terme1, terme2) somme ← terme1 + terme2 ecrire(somme) 15
  • 16. Résolution d’un problème algorithme de programmation - principe • Algorithme complet avec entête et instructions de présentation • Algorithme qu’on pourra traduire en langage de programmation 16
  • 17. Résolution d’un problème algorithme de programmation - exemple • Rappel de l’algorithme logique de l’exemple précédent lire(terme1, terme2) somme ← terme1 + terme2 ecrire(somme) • Algorithme de programmation de l’exemple précédent Programme calculerSomme Variable terme1, terme2, somme : Entier Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) somme ← terme1 + terme2 ecrire(terme1," + ",terme2, " = ",somme) Fin 17
  • 18. Notion d’identificateur  Nom donné aux diverses composantes (types, constantes, variables et sous-programmes) d'un programme.  Formé de lettres alphabétiques et de chiffres ainsi que du caractère _ (espace souligné ou underscore).  Le 1er caractère ne doit pas être un chiffre.  L’identificateur doit être suffisamment explicite.  Les variables et les sous-programmes commencent toujours par une minuscule.  Les types commencent toujours par une majuscule.  Les constantes ne sont composées que de majuscules.  Lorsque l’identifiant contient plusieurs mots, on articule ces mots avec des majuscules ou avec le caractère _.  Exemples : note1, fin_de_fichier, finDeFichier, TVA, PI  Contre-exemples : 4eme, x#y, note-1, note 1. 18
  • 19. Notion de variable • Variable : emplacement dans la mémoire RAM pour le stockage d’une donnée • Exples sur l’algo du thé : paquet de thé, pot de sucre, bouteille d’eau, verres à thé, théière • Caractéristiques d’une variable : o valeur ou contenu « provisoire » ; o type décrivant un ensemble de valeurs et un ensemble d'opérateurs sur ces valeurs ; o identificateur ou nom permettant l’accès (R or W) à la variable. • NB : toute variable utilisée dans le corps du programme doit d’abord être déclarée dans l’entête. • Déclaration d’une ou de plusieurs variables : Variable identificateur1[,identificateur2, …] : Type v a l e u r identificateur 19
  • 20. Type de données  Un type de données désigne la nature du contenu d’une variable  Exples sur l’algo du thé : paquet de thé, pot de sucre, bouteille d’eau  Un type de données définie l’ensemble des :  valeurs que peut prendre une variable ;  actions que l’on peut effectuer sur une variable.  Une fois qu’un type de données est associé à une variable,  le contenu de cette variable doit être du même type ;  cette variable ne peut plus changer de type.  Il y a deux grandes catégories de type :  types simples ;  types composites. 20
  • 21. Types simples numériques • Naturel : entiers non signés (sous-ensemble de IN) • Entier : positifs et négatifs (sous-ensemble de Z) • Reel : sous-ensemble de IR Exemples : 0.1, -1.2 (attention utilisation du . à la place de la ,) • Exemples de déclaration de variables numériques Variable age : Naturel temperature : Entier taille, poids : Reel 21
  • 22. Types simples booléen, caractère et chaîne de caractères • Booleen : les variables ne prennent que les valeurs VRAI ou FAUX • Caractere : lettre, chiffre ou symbole (visible ou non) entouré par de simples quotes (apostrophes) Exples de littéraux de type Caractere : 'a', '3', 'n' • ChaineDeCaracteres : suite de caractères entourée de doubles quotes (guillemets). Exple de littéral de type ChaineDeCaracteres : "Bonjour Ali", • Exemples Variable theRefroidi : Booleen initiale : Caractere nom : ChaineDeCaracteres 22
  • 23. Constante • Constante : donnée qui ne change jamais durant tout le programme • Une constante a un identificateur, une valeur et un type induit par la valeur • Syntaxe de la déclaration d’une constante : Constante IDENTIFICATEUR = valeur • Lorsque l’identifiant d’une constante contient plusieurs mots, on les articule avec le caractère _. • Exemple Constante TVA = 0.18 23
  • 24. Opérateurs présentation • Opérateur : outil permettant de traiter des données • Exemples sur l’algo du thé : mélanger eau, thé et sucre; réchauffer le mélange • Le type d’une donnée indique les opérations qu’elle peut subir • Principaux opérateurs – Arithmétiques (opérandes et résultat de type numérique) – Relationnels (opérandes de tout type et résultat de type booléen) – Logiques (opérandes et résultat de type booléen) 24
  • 25. Opérateurs arithmétiques • Six opérateurs arithmétiques : addition (+), soustraction (-), multiplication (x), division (/), division entière (DIV), reste de la division entière ou modulo (MOD). • Leurs opérandes peuvent être des entiers ou des réels hormis ceux des deux derniers qui agissent uniquement sur des entiers. • + et – sont aussi des opérateurs unaires (appliquer sur un seul opérande) Exemples : +2, -1.2 • Lorsque des opérandes de types différents sont utilisés, il y a conversion implicite dans le type le plus fort. Naturel < Entier < Reel 25
  • 26. Opérateurs relationnels • Six opérateurs relationnels < inférieur à ≤ inférieur ou égal à > supérieur à ≥ supérieur ou égal à = égal à ≠ différent de • Le résultat d’une comparaison est un booléen 26
  • 27. Opérateurs logiques • Trois opérateurs logiques : ET, OU, NON • Tables de vérité • L’évaluation est faite de gauche à droite et le processus est interrompu dès que le résultat final est déterminé. • NON est un opérateur unaire A V V F F B V F F V A ET B V F F F A OU B V V F V NON A F F V V Vraie si tous les opérandes sont vrais Vraie si au moins l’un des opérandes est vrai 27
  • 28. Opérateurs priorité et associativité • Lorsque plusieurs opérateurs sont utilisés dans la même instruction, certains sont prioritaires par rapport à d'autres. Exemple : -2 + 4 x 3 = 10 • Les parenthèses permettent de modifier l’ordre de priorité par défaut Exemple : -(2 + 4) x 3 = -18 • Si les opérateurs ont la même priorité, l'associativité détermine leur ordre d'exécution. Exemple : -2 + 1 - 8 / 2 x 3 = -13 28
  • 29. Opérateurs Associativité et priorités par ordre décroissant Catégorie Opérateurs Associativité Référence ( ) [ ] . -> GD Unaire +, -, NON DG Arithmétique *, /, DIV, MOD GD Arithmétique +, - GD Relationnel <, ≤, >, ≥ GD Relationnel =, ≠ GD Logique ET GD Logique OU GD + p r i o r i t a i r e - 29
  • 30. Affectation • Avec le symbole ←, l’affectation a pour principal but d’attribuer une valeur à une variable • Sa syntaxe est : IdentificateurVariable ← Valeur (ou expression) • Exples sur l’algo du thé : mettre de l’eau dans la théière ; remplir les verres de thé ; transvaser du thé d’un verre à un autre • La signification de l’utilisation d’un identificateur de variable diffère suivant sa position : – à gauche du symbole d’affectation, l’identifiant nous permet de définir ou de modifier la valeur de la variable – à droite du symbole d’affectation, l’identifiant nous permet de récupérer la valeur de la variable tp1 30
  • 31. Entrées/sorties • Un algorithme peut avoir des interactions avec l'utilisateur. • L’outil ecrire() permet d’afficher des chaînes de caractères et des valeurs d’expressions • Expression = combinaison de littéraux, de variables, d'opérateurs, et de fonctions qui est évaluée pour produire une nouvelle valeur. • Une chaîne et une expression sont concaténées par une virgule • Syntaxe : ecrire("chaîne de caractères", expression) • L’outil lire() invite un utilisateur à saisir une (ou +sieurs) donnée(s) pour une mémorisation dans une (ou +sieurs) variable(s). • Syntaxe : lire(nomVar1 [,nomVar2, …]) • Exemple ecrire("Entrez votre âge, puis votre taille SVP ?") lire(age, taille) ecrire("Vous avez ",age," ans et vous mesurez ",taille," mètres") App2 31
  • 32. Structures de contrôle présentation • Par défaut, les instructions d’un programme sont exécutées d’une manière séquentielle. Exemple : 1. Mettre de l’eau dans la théière 2. Mettre du thé dans la théière 3. Poser la théière sur le fourneau • Parfois, il est nécessaire qu’un traitement (une ou +sieurs instructions) – ne soit pas systématiquement exécuté ; Exemple : réchauffer le thé – ou soit exécuté plusieurs fois. Exemple : transvaser du thé d’un verre à un autre D’où l’intérêt des structures de contrôle. • Deux grands types de structures de contrôle : – structures conditionnelles ou tests ; – structures répétitives (ou itératives) ou boucles. 32
  • 33. Structures de contrôle structure conditionnelle stricte • Structure utilisée si on souhaite exécuter un traitement seulement si une condition est vraie et ne rien prévoir si cette condition est fausse. Exemple : réchauffer thé • Sa syntaxe : Si (condition) Alors traitement FinSi • Que le traitement soit exécuté ou non, le programme continue normalement son exécution après l’instruction FinSi. Exemple Si (thé est très refroidi) Alors réchauffer thé FinSi 33
  • 34. Structures de contrôle structure conditionnelle alternative • Structure permettant d'exécuter deux traitements différents en fonction de la valeur booléenne d’une condition. • Sa syntaxe : Si (condition) alors traitement_1 Sinon traitement_2 FinSi • Après l’exécution du traitement 1 ou bien du traitement 2, le programme continue normalement son exécution juste après l’instruction Finsi. Exemple Si (Il y a un bon film) Alors aller au cinéma Sinon aller à la plage FinSi 34
  • 35. Structures de contrôle structure conditionnelle alternative multiple • La structure conditionnelle alternative multiple permet d'exécuter plusieurs traitements différents en fonction de valeurs booléennes de plusieurs conditions. • Sa syntaxe : Si (condition_1) Alors traitement_1 Sinon si (condition_2) Alors traitement_2 … Sinon traitement_n FinSi • Tout « Sinon » indique que toute condition précédente est fausseApp3 Exemple Si (Il y a un bon film) Alors aller au cinéma Sinon si (Il fait beau) Alors aller à la plage Sinon regarder la télé FinSi 35
  • 36. Structures de contrôle structure conditionnelle de choix • Syntaxe : Selon (expression) Faire valeur1 : traitement1 valeur2 : traitement2 … [Sinon : traitement par défaut] FinSelon Exemple Selon (jour) Faire 1 : ecrire("On est lundi") 2 : ecrire("On est mardi") 3 : ecrire("On est mercredi") 4 : ecrire("On est jeudi") 5 : ecrire("On est vendredi") 6 : ecrire("On est samedi") 7 : ecrire("On est dimanche") Sinon : ecrire(" Chiffre non valide") FinSelon • La structure conditionnelle de choix permet de choisir le traitement à effectuer en fonction de la valeur d'une expression. • Dès que l’expression est égale à une valeur, le traitement associé est exécuté puis le programme continue normalement son exécution juste après l’instruction FinSelon sans envisager les cas suivants. 36
  • 37. Structures de contrôle structure itérative « Tant que … Faire » • La boucle Tant que … Faire permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe : Tant que (condition) faire traitement finTantQue • La condition est testée avant la première exécution du traitement • Ce traitement peut d’ailleurs ne jamais s’exécuter • Le traitement doit faire évoluer une (ou des) variable(s) menant la condition à la valeur FAUX pour éviter une boucle infinie • Lorsque la condition devient fausse le programme continue normalement son exécution après l’instruction qui suit le FinTantQue. Exemple Tant que (pas d’ébullition) faire laisser la théière sur le réchaud finTantQue 37
  • 38. Structures de contrôle structure itérative « Faire … Tant que » • La boucle Faire … Tant que permet de répéter un traitement tant qu'une expression conditionnelle est vraie. • Sa syntaxe Faire traitement Tant que (condition) • Le traitement s’exécute au moins une fois • Le traitement doit faire évoluer une (ou des) variable(s) menant la condition à la valeur FAUX pour éviter une boucle infinie • Lorsque la condition devient fausse, le programme continue normalement son exécution après l’instruction Tant que (condition). App4 Exemple Faire laisser la théière sur le réchaud TantQue (pas d’ébullition) 38
  • 39. Structures de contrôle structure itérative « Pour » • La boucle Pour permet de répéter un traitement un nombre connu de fois. • Syntaxe Pour var_compteur ← val_initiale à val_finale [pas de p] faire traitement FinPour • La variable compteur est de type entier ; elle est initialisée à la valeur initiale et elle augmente de p à chaque répétition du traitement. • p : entier positif ou négatif et dont la valeur par défaut est 1. • Exemples : Afficher « Bonjour » 15 fois Pour i ← 1 à 15 faire ecrire ("Bonjour") FinPour • Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sort de la boucle. App5 39 Pour i ← 15 à 1 faire pas de -1 ecrire ("Bonjour") FinPour
  • 40. Tableaux présentation • Tableau : variable composite permettant de désigner sous un seul identifiant un regroupement de données de même type afin de les traiter plus facilement. • Les données sont mémorisées dans des cases contigües et repérées par des indices (entiers naturels) • Déclaration d’un tableau à une dimension : nomTab : tableau [DIM] de TypeDesDonnées DIM = dimension du tableau = nombre de cases du tableau • Notation de l’accès (écriture ou lecture) à une case : nomTab[indice] • L’indice varie de 0 à DIM – 1. • Exemple : voyelles : tableau [6] de caractères La case voyelles[1] contient la valeur'e' données 'a' 'e' 'i' 'o' 'u' 'y' indices 0 1 2 3 4 5 App6 40 0 1 2
  • 41. Tableaux tableaux à deux dimensions • Tableau à 2 dimensions = tableau à 1 dimension contenant des tableaux à 1 dimension. • Chaque case est repérée par deux indices (conteneur et contenu) • Déclaration : nomTab : tableau[DIM1][DIM2] de TypeDesDonnées DIM1 = dimension du tableau conteneur DIM2 = dimension commune des tableaux contenus • Notation de l’accès à une case : nomTab[indice1][indice2] avec 0 ≤ indice1 < DIM1 et 0 ≤ indice2 < DIM2 • Exemple : droite dans l’espace droite : tableau[2][3] de Reel 0 1 -3 6 8 0 1 2 4 -1 9 0 1 2 41 0 1 Ordonnée du 1er point de la droite = 6 = droite[0][1] Côte du 2ème point de la droite = 9 = droite[1][2]
  • 42. Tableaux tableaux à deux dimensions (suite et fin) • Un tableau à deux dimensions est représenté en mémoire comme un tableau à une seule dimension par concaténation des tableaux stockés. • Les données sont rangées suivant l’ordre obtenu en faisant varier le dernier indice (relatif aux tableaux contenus) en premier. -3 6 8 0,0 0,1 0,2 4 -1 9 1,0 1,1 1,2 App7 42
  • 43. Sous-programmes présentation • Les sous-programmes permettent : – d’implémenter la décomposition d’un problème en sous-problèmes ; – de faciliter la lisibilité, le débogage et la réutilisabilité/factorisation ; • Comme le programme principal, tout sous-programme possède un nom, un corps, des instructions et éventuellement des variables. • Mais un sous-programme n’est exécuté que lorsqu’il est appelé par un autre (sous-)programme. • Deux types de sous-programme :  procédure qui fait une certaine tâche ;  fonction qui renvoie, en plus, une valeur résultat. • L'appel d'une procédure constitue une instruction en lui-même. • L'appel d'une fonction est remplacé à l'exécution par la valeur retournée par celle-ci. Il doit forcément se trouver dans un calcul, une affectation, un affichage, un test, etc. 43
  • 44. Sous-programmes portée des variables • Portée d’une variable = étendue de son accessibilité • Toute variable déclarée dans un sous-programme est dite locale et n’est accessible que dans ce sous-programme. • Toute variable déclarée en dehors de tout sous-programme est dite globale et est accessible de partout dans le programme principal. • Les constantes ont généralement une portée globale • Un même identificateur de variable peut être utilisé pour désigner des variables locales de différents sous-programmes sans aucune ambiguïté. • En revanche, une variable globale n'existe qu'en un seul exemplaire pour tous les sous-programmes. • Lorsqu’une variable locale a le même identificateur qu'une variable globale, cette dernière est localement masquée; dans ce sous- programme la variable globale devient inaccessible. 44
  • 45. Sous-programmes paramètres • Rappelons qu’un sous-programme n’est exécuté que lorsqu’il est appelé par un autre (sous-)programme. • La communication entre sous-programme appelé et (sous-)programme appelant se fait par l'intermédiaire de variables locales au sous- programme appelé que l’on nomme « paramètres formels ». • Lors de l’appel, tout paramètre formel est associé à une variable ou constante de même type nommée « paramètre effectif » du (sous-)programme appelant. • Il existe trois types d'association ou de passage de paramètre : – passage de paramètres en entrée ; – passage de paramètres en sortie ; – passage de paramètres en entrée/sortie. 45
  • 46. Sous-programmes passage de paramètres (schéma comparatif) Paramètre en entrée Paramètre en sortie Paramètre en entrée et sortie Clé USB CD vierge CDROM Sous programme 46
  • 47. Sous-programmes passage de paramètres en entrée • Les instructions du sous-programme appelé ne peuvent pas modifier le paramètre effectif. • En fait, c'est uniquement la valeur du paramètre effectif qui est copiée dans le paramètre formel • C'est le seul passage de paramètre qui admet l'utilisation d'une constante comme paramètre effectif. • Exemple : Le sous-programme ecrire() qui permet d'afficher des informations admet des paramètres en entrée. 47
  • 48. Sous-programmes passage de paramètres en sortie • Les instructions du sous-programme appelé affectent obligatoirement une valeur au paramètre formel (valeur qui est donc aussi affectée au paramètre effectif associé) • Eviter d’utiliser des constantes comme paramètre effectif pour ce type de passage de paramètres. • La valeur que pouvait posséder le paramètre effectif n'est pas utilisée par le sous-programme appelé. • Exemple : Le sous-programme lire() qui permet de mettre dans des variables des valeurs entrées par l'utilisateur admet des paramètres en sortie 48
  • 49. Sous-programmes passage de paramètres en entrée/sortie • Passage de paramètre qui combine les deux précédents • A utiliser lorsque le sous-programme appelé doit utiliser puis modifier la valeur du paramètre effectif. • Comme pour le passage de paramètre en sortie, on ne peut pas utiliser une constante comme paramètre effectif • Exemple : Le sous-programme permuter() qui permet de permuter les valeurs de deux variables admet des paramètres en entrée/sortie 49
  • 50. Sous-programmes fonctions - présentation • Une fonction est un sous-programme admettant 1 ou +sieurs paramètre(s) et retournant un seul résultat (en Maths y = f(a,b,…)) • Une fonction possède un type qui est celui de la valeur retournée • Le passage de paramètres est uniquement en entrée • Un paramètre effectif peut être une variable, une constante mais aussi le résultat d’une fonction • Syntaxe de la définition d’une fonction : Fonction nomFonction(nomParam1 : TypeParam1[,…]) : TypeRslt Variable Déclaration des éventuelles variables locales Début instruction(s) retourne rslt FinFonction • Syntaxe de la déclaration d’une fonction dans un programme appelant : Fonction nomFonction(TypeParam1[,…]) : TypeRslt 50
  • 51. Sous-programmes fonctions - exemple (* Définition de la fonction *) Fonction additionner(p_terme1 : Reel, p_terme2 : Reel ) : Reel Variable somme : Reel Début somme ← p_terme1 + p_terme2 retourne somme FinFonction (* Appel de la fonction *) Programme test_additionner Variable terme1, terme2 : Reel Fonction additionner(Reel, Reel) : Reel Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) ecrire(terme1," + ",terme2, " = ", additionner(terme1,terme2))App8 51
  • 52. Sous-programmes procédures - présentation • Une procédure est un sous-programme qui ne retourne aucun résultat • Par contre elle peut admettre des paramètres avec des passages : – en entrée, préfixés par E (ou →) – en sortie, préfixés par S (ou ←) – en entrée/sortie, préfixés par E/S (ou ↔) • Syntaxe de la définition d’une procédure : Procédure nomProcedure([ modePassage nomParam1:typeParam1[,…] ]) Variable Déclaration d’éventuelles variables locales Début instruction(s) finProcédure • Syntaxe de la déclaration d’une procédure dans un programme appelant Procédure nomProcedure([ modePassage typeParam1[,…] ]) 52
  • 53. Sous-programmes procédures - exemple (* Définition de la procédure *) Procédure somEtDif(E a : Reel, E b : Reel, S som : Reel, S dif : Reel) Début som ← a + b dif ← a - b finProcédure (* Appel de la procédure *) Programme test_somEtDif Variable terme1, terme2, somme, difference : Reel Procédure somEtDif(E Reel, E Reel, S Reel, S Reel) Début ecrire("Entrez deux valeurs entières SVP ") lire(terme1, terme2) somEtDif(terme1, terme2, somme, difference) ecrire(terme1," + ",terme2, " = ", somme) ecrire(terme1," - ",terme2, " = ", difference) Fin App9&10 53
  • 54. Enregistrements présentation • Enregistrement = variable composite qui permet de désigner sous un seul identifiant un regroupement de données connexes de types différents ou non, afin de les manipuler plus facilement • L’usage d’un enregistrement est précédé de la déclaration d’un nouveau type, structuré par des champs de types différents ou non • Syntaxe de la déclaration d’un type structuré : TYPE NomType=structure nomChamp1 : typeChamp1 … nomChampN : typeChampN finStructure • Exemple : médicament modélisé par nom, prix et quantité en stock TYPE T_medicament=structure nom : ChaineDeCaracteres prix : Naturel quantiteEnStock : Naturel finStructure 54
  • 55. Enregistrements déclaration et accès • Syntaxe de la déclaration d’un enregistrement : Variable nomEnregistrement : NomType • Syntaxe de l’accès à un champ d’un enregistrement : nomEnregistrement.nomChamp • Un champ s’utilise comme une variable simple • Exemple Variable e_medicament1 : T_medicament (* Accès en écriture *) e_medicament1.nom ← "Doliprane" e_medicament1.prix ← 1024 e_medicament1.quantiteEnStock ← e_medicament1.quantiteEnStock - 1 App11 55