Algo2 – CM1 Tous les langages de programmation utilisent la même algorithmétique Selon la philosophie du langage, il existe quelques nuances : o Certains langages travaillent mieux avec les tableaux, d’autres avec les listes, d’autres avec les objets, etc. o Certains se basent sur la programmation impérative, fonctionnelle, logique et peuvent être itératifs, récursif, etc. o Certains sont dédiés à des types précis d’applications ou à des contextes d’utilisation particuliers o La gestion ders variables être différente (pas forcément déclarées, statiques/dynamiques, etc). Mais pour tous les langages de programmation : o On utilise les conditionnelles, les boucles et les structures de données que l’on verra en cours o A un programme donné correspondra un algorithme précis o Le temps passé pour effectuer un calcul est lié à la difficulté du problème traité et à l’algorithme sous-jacent o L’algorithmique est l’art de structurer sa pensée pour résoudre un problème avec quelques opérations simples Exemple : Une identité : un nom, un prénom, une date de naissance , une INE, un numéro de sécurité sociale, une adresse, un numéro de téléphone, une adresse email Une photo Un cursus : un département et une année d’études, un groupe de TD et un numéro de TP. Des données spécifique, compte informatique et identifiant Modularité : Certaines instructions peuvent être utilisées plusieurs fois dans un même code Il faut éviter des les retaper systématiquement : o Risque d’erreur grandement accru o Mise à jour quasi-impossible On découpe le code en modules indépendants qui sont utilisés selon les besoins Pour se faire : fonctions, objets, constantes Objectifs Langage utilisé : PHP Objectif : bases du langage Syntaxe, déclaration et affectation des variables, variables prédéfinies, Récupération des données d’un formulaire, Déclarations et appels de fonction, Manipulations de fichiers. On souhaite mémoriser toutes les notes de SRC1 à un contrôle Cela fait environ 90 variables Comment les déclarer, les initialiser, les manipuler ? o On utilise les boucles. Tableau : Un tableau est caractérisé par Son nom Sa taille Le type (unique en algorithmique) des variables qu’il contient REMARQUE IMPORTANTE : En algorithmique, un tableau contient un seul type de variables On déclare un tableau dans l’entête de l’algorithme avec le reste des variables : Variables : Somme de type Entier T tableau de taille 10 de type Entier En mémoire : On réserve alors un emplacement en mémoire o Correspondant a la taille de 10 entiers o Dont les octets sont consécutifs (adresses qui se suivent) Par exemple, si un entier occupe 8 octet, n réserve alors un emplacement de 80 octets consécutifs pour stocker les variables. X X X X X Pour accéder au contenu du tableau T, on indique le nom et le numéro de la case T[0] pour la première case T[1] pour la deuxième T[5] pour la sixième T[9] pour la neuvième Définition :: Soit T un tableau de taille n. Les numéros de cses sont Exploitation : Accès direct (plus rare) : on regarde le contenu d’une unique case en utilisant directement son indice Parcours (très fréquent) : on peut ne parcourir qu’une partie du tableau. Parcours Un tableau se parcourt avec une boucle Il existe 2 types de boucles : POUR et TANT QUE Boucle POUR : on connait à l’avance le nombre de case a parcourir, condition, sur l’indice Boucle TANT QUE : on ne connait pas à l’ avance le nombre de cases à parcourir, condition sur le contenu Variables : I de types entier T tableau de taille 90 de type Entier Début POUR i allant de 0 à 99 Ecrire « saisir un entier » Lire T FIN POUR Fin Variables i de type entier T tableau de taille 10 de type Entier Début I <= 0 TANT QUE T[i] > 5 i <= i + 1 FIN TANT QUE SI i = 10 Ecrire « Tous les entiers de ce tableau sont plus grands que 5. » SINON Ecrire « La (i + 1) ème case a un contenu inférieur ou égal à 5 » Fin SI Fin III. Autre Mémoire : La mémoire est découpée en octets. Les octets ont une certaine adresse ? Ces adresses ne sont pas directement accessibles par le programmeur car elles sont difficiles à gérer Processus : Un processus est un programme en cours d’exécution. Il a un début et une fin, il dispose de temps de calcul auprès du processeur et d’une zone en mémoire Il gère la zone de mémoire Pointeurs : Un pointeur est une adresse mémoire. C’est un entier qui correspond à un emplacement mémoire du processus On peut se le représenter comme une flèche qui pointe vers un emplacement mémoire. Une variable correspond à un emplacement mémoire et à une valeur d’un certain type (et donc d’une certaine taille). Il existe autant de types de pointeurs que de types de variables. Utilité : On peut composer des structures de données élaborées : par exemple les tableaux, les listes et les arbres Lien avec les tableaux : Un tableau est en fait un pointeur vers la première case. On connait le type des données donc la taille de chaque case en mémoire Puisque les cases sont consécutives, il est facile de connaître directement l’adresse des autres cases.