INFO719 : rappels d'algorithmique et programmation C

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche

Ce wiki est un complément de cours pour le cours "info-719 : rappels d'algorithmique et programmation C". La participation au wiki n'est pas obligatoire mais fortement encouragée. Pour pouvoir modifier les pages, inscrivez-vous (lien en haut à droite) pour obtenir un login et mot de passe. (Utilisez votre vrai nom...)

Vous pouvez aller voir ce guide pour vous familiariser avec les wikis.


Exercice : si vous n'en avez pas, créez-vous un compte et essayez de modifier cette page (correction de fôtes d'aurtograffe, rajout de détails, mise en page, ...)

Vous pouvez aussi utiliser la page de discussion pour ... discuter. (Ou poser des questions, faire des commentaires etc.)



Détails techniques

Nouvelles

Les nouvelles récentes sont en haut de la liste...

  • Hyvernat 12 septembre 2008 à 15:43 (CEST) : création du wiki


Organisation des séances

Comme vous n'êtes pas nombreux, le cours sera entièrement en mode cours / TD.

  • première séance (12/09/2008) : introduction, calcul du maximum,


Les support de TD et TP

à venir


Introduction

Objectifs

  • mettre tout le monde à niveau sur les compétences de base en algorithmique
  • donner des notions de base sur l'informatique concrète
  • Étudier quelques techniques importantes d'algorithmique
  • apprendre les bases du langage C


Plan

  • intro, étude d'un exemple
  • rappel d'algorithmique (probablement faits en TD)
  • rappel mathématiques, complexité
  • quelques techniques d'algorithmique
  • notions de complexité
  • le langage C


Rappels historiques

Vous pouvez partir de cette page pour avoir un peu plus de détails...

La préhistoire : le calcul

  • le boulier chinois
  • la pascaline de Pascal, inventée en 1641/42 : elle ne permet de faire que des additions (et des soustractions
  • Leibniz rajoute la multiplication à la pascaline (1673)
  • les "moulins à chiffres" de Charles Babbage (1834-36), malheureusement jamais construits...
  • la "tabulating business machine" de Hollerith permet d'automatiser les calculs pour le recensement de la population américaine. Ceci donnera ensuite la société "international business machine" (IBM).
  • l'apparition du relais électromécanique (1900) d'une fréquence de 100 Hz, permet la construction du Harvard Mark I en 1944


Les programmes et instructions


Les ordinateurs "modernes"

  • l'invention du tube à vide permet le développements d'ordinateurs entièrement électroniques : l'ENIAC en est le premier exemplaire (1946) ; il pèse environ 30 tonnes...
  • la machine de Turing (ordinateur théorique)
  • le Manchester Mark I (1948) et l'EDVAC (1951) améliorent l'ENIAC et commencent à ressembler à des ordinateurs modernes
  • l'UNIVAC I est le premier ordinateur commercialisé, en 1951.



Rappels d'algorithmique

Un exemple

Exercice : écrivez un programme qui fait la chose suivante : on dispose d'un tableau d'entier T de taille n. L'élément i du tableau est noté T[i]. On veut modifier T en interchangeant le plus petit et le plus grand élément.

Solution possible


int i=0
int max=0   /* indice du maximum */
int min=0   /* indice du minimum */

if (n==0) then  exit  /* est-ce que le tableau est vide ? */

for i:=0 to n-1                /* j'ai pris la convention du C : les tableaux commencent à l'indice 0 */
  if T[i] < T[min] then min:=i
  if T[i] > T[max] then max:=i
end

i:=T[min]
T[min] := T[max]
T[max] := i

exit


Exercice : écrivez un algorithme pour chercher les deux éléments maximaux d'un tableau

Solution possible

à faire


Exercice : écrivez un algorithme pour chercher l'élément maximal, ainsi que celui qui est juste en dessous (strictement). Par rapport à la question précédente, la différence ne se voit que si l'élément maximal apparaît plusieurs fois dans le tableau.

Solution possible

à faire