algo
Page 1: Introduction
- Établissement: ESILV, École d'ingénierie de Vinci Paris
- Module: Algorithmique et langage C#
- Responsable du module: Safwan CHENDEB
- Support du cours par: Nora IZRI, Département Informatique
Page 2: Contacts
- Équipe pédagogique:
- Safwan CHENDEB
- Email: safwan.chendeb@ext.devincie.fr
- Chargés de TD:
- Safwan CHENDEB
- Email: safwan.chendeb@ext.devincie.fr
- Safwan CHENDEB
Page 3: Déroulement du Module
- Composition du module: CM (cours magistral) et TD (travaux dirigés)
- 21h de CMO en ligne (14 séances de 1h30)
- 39h de TD (13 séances de 3h)
- Travail personnel: Minimum 35h
- Matériel requis:
- Ordinateur personnel pour CMO et TD
- Environnements de travail:
- IDE en ligne: .NET Fiddle
- MS Visual Studio Community: Site de Visual Studio
- LMS: Plateforme d'apprentissage
- Schooding: Plateforme de programmation
Page 4: Modalités d'Évaluation
- Évaluations du module:
- 2 à 4 DST (contrôles continus en CM, 30min à 1h)
- 2 à 4 TD notés sur ordinateur
- Distribution des notes:
- Note finale: 50% CMO et 50% TD + note de participation
- Les épreuves se dérouleront sur la plateforme Schooding
- Remarque: Possibilité de contrôle continu à chaque CM
Page 5: Règles d'Or
- Présence obligatoire aux CM et TD
- Implication et investissement personnel requis
- Participation et motivation
- Ponctualité: retards non acceptés (absence)
- Utilisation de téléphone portable interdite
- Ordinateur personnel requis
Page 6: Objectifs du Cours
- Compétences à acquérir:
- Résoudre des problèmes comme une machine
- Exprimer et formaliser un raisonnement
- Concevoir et écrire des algorithmes, communiquer avec une machine
- Créer et manipuler des données personnalisées (structures)
- Comprendre et manipuler des données dans des tableaux/matrices
- Manipuler des algorithmes de tri de tableaux
Page 7: Organisation des CM et TD
- Séquences CMO:
- CMO1: Introduction à l'algorithmique
- CMO2: Variables, tests et boucles
- CMO3 à CMO11: Méthodes, tableaux, matrices, et algorithmes de tri
- CMO12: Collections
- CMO13 à CMO14: Exercices et DST
- Séquences TD:
- TD1 à TD14: Introduction, initiation à C#, tests, méthodes et structures
- TD15 à TD17: CC et corrections
- TD18 à TD26: Révisions et matrices
Page 8: Qu'est-ce qu'un Algorithme?
- Définition:
- Un algorithme est une suite finie et non ambiguë d'opérations pour résoudre un problème.
- Cela décrit une procédure concrète, indépendamment du langage de programmation.
- Avantages:
- Facilite la réflexion sans se concentrer sur des détails d'implémentation
- Facilement compréhensible pour un humain
- Implémentable dans divers langages
Page 9: Comment Décrire un Algorithme?
- Processus:
- Écrire les instructions: actions, tests, et répétitions
- Existence de plusieurs algorithmes pour le même problème
Page 10: Exemples d'Algorithmes
- Application:
- Calcul de n!
- Recherche d’un élément
- Notice de montage (meubles, machines)
- Calcul du plus court chemin
Page 11: Étapes d'un Algorithme
- Phases:
- Préparation, traitement, édition des résultats
- Résolution étape par étape
- Impression ou sauvegarde des résultats
Page 12: Programmation
- Définition: Écrire des instructions en langage de programmation (texte).
- Développeur: Écrit le code source, mais l’ordinateur ne comprend pas ce code.
- Compilation: Transformation du code source en instructions exécutables ( Binaire ou Bytecode)
Page 13: Programmation et Compilation
- Fichiers Source: Extension .cs
- Compilateur: Détecte les erreurs et traduit en binaire
- Exécution: Simple et moderne, utilisé dans les entreprises
Page 14: Le Langage C
- C#:
- Prononcé « cé charpe »
- Créé par Microsoft en 2001, par Anders Hejlsberg
- Langage de haut niveau orienté objet
- Libre d'utilisation
Page 15: Documentation
- Ressources:
Page 16: Algorithmique
- Algorithmique: Ensemble de méthodes pour définir et étudier des algorithmes
- Algorithme: Séquence d’actions pour résoudre un problème
Page 17: Utilité d'un Algorithme
- Précision:
- Décrit les étapes de façon structurée et compacte
- Indépendant des langages
Page 18: Résolution d'un Problème
- Caractéristiques:
- Données d'entrée et résultats en sortie
- Méthode adaptée aux moyens disponibles
Page 19: Méthode Adaptée
- Adéquation:
- Doit être compréhensible et transmissible
Page 20: Résolution Simplifiée
- Accessibilité:
- Adaptée aux compétences de l'utilisateur
Page 21: Conception d'Algorithmes
- Structure:
- Utilisation d'opérations de base
- Facilité de compréhension
Page 22: Représentation d'un Algorithme
- Représentation en texte, organigramme ou pseudo-code
Page 23: Algorithme: Exemple de Texte
- Ingrédients:
- Liste de ressources utilisées pour l'algorithme culinaire
- Opérations:
- Instructions pour faire crepes. Comprend différentes étapes clarifiant les actions à effectuer
Page 24: Organigramme et Algorithmes
- Utilisation:
- Organigrammes pour décrire des cycles et processus automatisés
- Respect des règles : début et types d’étapes
Page 25: Règles d'Écriture des Organigrammes
- Début: Indiqué par une case ovale
- Action et Questions:
- Actions dans des rectangles, questions dans des losanges
Page 26: Erreurs Courantes
- Importance du sens des flèches et de l'utilisation correcte des éléments
- Utilisation exclusive de traits horizontaux ou verticaux
Page 27: Vérifications d'un Organigramme
- Consignes: Vérifier l'existence et la finalité des flèches
- Obligation de terminer par Fin ou de revenir sur une boucle
Page 28: Structure d'un Algorithme
- En-tête: Comprend le nom et les variables
- Corps: Contient les instructions entre Début et Fin
Page 29: Composants d'un Algorithme
- Données d'entrée et sortie
- Variantes utilisées dans des contextes différents
Page 30: Types d'Instructions
- Déclaration de variables et différentes opérations
Page 31: Variables
- Définition: Boîtes étiquetées pour stocker des valeurs
- Propriétés: Nom, valeur, type, adresse
Page 32: Déclaration de Variables
- Indiquer le type et le nom d'une variable
- Exemple :
Variable maVar : réel
Page 33: Nommage des Variables
- Éviter les confusions entre nom et contenu
- Constantes et variables recommandées
Page 34: Conseils pour Nommage
- Utiliser des noms expressifs avec des conventions acceptables
Page 35: Types de Variables
- Types: Caractère, chaîne, entier, réel, booléen
Page 36: Affectation
- Fonction de l'affectation: Mettre une valeur dans une variable définie par son nom
- Conservation des types et changement de valeur
Page 37: Opérations
- Opérations Mathématiques: Multiplication, division, division entière, modulo
Page 38: Comparaisons
- Symboles: >,
Page 39: Opérateurs Logiques
- Comprend AND, OR, NOT
Page 40: Utilisation des Conditions
- Structure:
- Si condition Alors { Instructions } FinSi
Page 41: Exemples de Conditions
- Exemples pratiques d'utilisation des conditions logiques
Page 42: Structures Conditionnelles
- Ajout des instructions dans le cas des conditions fausses
Page 43: Conditions Imbriquées
- Complexité: Ajout de niveaux supplémentaires pour évaluer des conditions
Page 44: Instruction SWITCH
- Utilisation pour simplifier les tests multiples de valeurs
Page 45: Fonctionnement de la Structure SWITCH
- Suivi et évaluation des conditions jusqu'à la sortie appropriée
Page 46: Trace d'un Algorithme
- Importance des valeurs et instructions pour suivre l'exécution
Page 47: Structure d'un Algorithme
- Syntaxe:
- Algorithme, variables, constantes, corps, et fin
Page 48: Exemple d'Algorithme
- Algorithme pour résoudre une équation quadratique
Page 49: Saisie d'Utilisateurs
- Collecter et traiter les valeurs fournies par l'utilisateur
Page 50: Structures Itératives
- Répéter des actions similaires dans les algorithmes
Page 51: Importance des Structures Itératives
- Historique: Connaissance du nombre d'exécutions, visibilité, et utilisation correcte
Page 52: Boucle TANTQUE
- Fonctionnement: Répéter jusqu'à ce qu’une condition soit vraie
Page 53: Boucle POUR
- Utilisation pour définir le nombre d'itérations connotées par l'intervalle donné
Page 54: Comparaison TANTQUE vs POUR
- Comparaison d'usage et divers contextes d'exécution
Page 55: Instruction RÉPÉTER
- Utilisation: Exécute des instructions au moins une fois
Page 56: Exemples de CONDITIONS
- Appliqués dans des contextes pour obtenir des résultats valides
Page 57: Utilisation de Sous-Programmes
- Bénéfices: Réutilisation et structure d'un processus de programmation
Page 58: Sous-Programmes - Généralités
- Utilisation pour décomposer de manière simple des problèmes en sous-problèmes
Page 59: Calculs et Références
- Importance des paramètres et des sous-programmes
Page 60: Paramètres
- Définition et fonctions passées par les sous-programmes
Page 61: Utilisation de Variables
- Locale vs globale et portées des variables disponibles
Page 62: Déclaration d'un Sous-Programme
- Syntaxe claire pour la création
Page 63: Appel d'un Sous-Programme
- Mécanisme pour exécuter un sous-programme en fonction des paramètres passés
Page 64: Types de Sous-Programmes
- Différences entre procédures et fonctions considérées
Page 65: Procédures
- Rendre un résultat ou des identifier
Page 66: Fonctions
- Les résultats retournés au programme appelant et leur utilité
Page 67: Exemple pratique
- Fonction définissant la valeur maximale
Page 68: Attention portée sur l'affichage
- Rappel sur l'importance de bien comprendre afficher vs retourner
Page 69: Exercice pratique
- Identification des concepts de manière appliquée
Page 70: Correction de l'Exercice
- Exemple de décomposition d'une méthode ayant plusieurs entrées