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

Page 3: Déroulement du Module

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

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