Université du Québec à Chicoutimi Département d informatique et de mathématique Plan de cours Titre : Élément de programmation Sigle : 8inf 119 Session : Automne 2001 Professeur : Patrice Guérin Local : P3-5030.5 Téléphone : 545-5011 poste 2393
Description sommaire : La compréhension de la machine utilisé dans un domaine est essentielle à l évolution des connaissances dans ce domaine. Durant ce cours, l étudiant apprendra à faire fonctionner la machine de son domaine : l ordinateur. Pour ce faire, il développera des aptitudes à parler dans un langage que l ordinateur peut interpréter. C est la programmation. Ce cours servira également à développer chez l étudiant de bonnes habitudes de programmation afin d en faire un bon juge de la qualité d un programme et une personne compétente en programmation. Ce cours permettra à l étudiant de comprendre et d apprivoiser l ordinateur en étant producteur au lieu de consommateur. Objectifs : Introduire l'étudiant à un langage de programmation procédurale. Connaître les étapes à suivre afin de résoudre un problème à l'aide d'un ordinateur. Développer l'esprit d'analyse et une bonne méthodologie de la programmation. Contenu : Étudier les principaux éléments de la programmation séquentielle structurée: types simples et composés, variables locales et globales; expressions; structures de contrôle; fonctions, tableaux et pointeurs; algorithmes itératifs et récursifs; passage de paramètres par valeur et par référence; allocation dynamique de la mémoire; notions d'algorithmique et de conception de programmes; modularité et organisation des données; Stratégies pédagogiques : Un cours magistral par semaine visant à amener l étudiant à : Apprendre les concepts de la programmation séquentielle structurée. Visualiser les concepts théoriques à l aide d applications simples en C. Un laboratoire dirigé par semaine visant à amener l étudiant à : Appliquer les concepts théoriques dans des application simple en C. Se familiariser avec un compilateur et un environnement. Développer les bons réflexes de programmation.
Calendrier des cours et congés : 10 septembre : Cours 1 Présentation du plan de cours; Présentation des livres ( obligatoires ); Allégorie du joueur de football; Environnement UNIX, FTP, Microsoft Visual C++; Premiers programmes, déclaration, commentaires, en-tête. 11 septembre : Exercice et laboratoire 1 «Hello the world», calculs simples, impression à l écran, lecture à l écran. 17 septembre : Cours 2 Variables ( type, portée, durée de vie); Expression, ordre des opérations; Structure de contrôle : si alors sinon; Bloc d instruction; Si alors imbriqués. 18 septembre : Exercices + Laboratoire 2 Problème de décision, calcul d intervalles, menu. 24 septembre : Cours 3 Structure de contrôles itérative; do while do ; Constante ( #define vs const ). 25 septembre : Exercices + Laboratoire 3 Menu en boucle, calcul de nombres premiers, dessins avec des boucles. 1er octobre : Cours 4 Passage de paramètres par valeur et (survol) par référence; Utilisation de fonctions existantes; le for ( ; ; ) : un while do caché??? 2 octobre : Exercices et laboratoire 4 Affichage en colonne, table de multiplication et puissance, chronomètre, chronométrage, pourcentage des nombres étant premiers.
8 octobre : Action de grâce ( Pas de cours ) 9 octobre : Fin du laboratoire 4. 15 octobre : Cours 5 Fonctions et procédures : déclaration, définition, erreurs courantes; Passage en paramètre par valeur et par référence; Découper un problème en problèmes plus simples (pseudo-code); Les étapes : Penser, réfléchir, analyser (régler le problème), puis programmer; L allégorie de l architecte; 16 octobre : Exercices Refaire laboratoire 4 du début avec des fonctions et des procédures, calculatrice simple sans ordre des opérations. 22 octobre : Cours 6 ( Pas de relâche ) La récursivité démystifiée; Les appels, les retours, la pile (variables statiques); La suite de Fibonacce; La Tour d Hannoi. 23 octobre : Mi-session ( exercices pour le plaisir ) Calcul de la puissance, suite géométrique, factoriel, etc. 29 octobre : Examen de mi-session 30 octobre : Fin des exercices pour le plaisir du 23 octobre + Laboratoire 5 Trace d une exécution d une solution récursive de la suite de Fibonacce et de factoriel. 5 novembre : Cours 7 Pointeurs : notions théoriques; Chaîne de caractères et tableaux; Passage de tableau en paramètre; Fonctions et procédures sur les chaînes. 6 novembre : Exercices Nouvelles fonctions sur les chaînes, calcul optimisé du nombre d entiers premiers inférieurs à une borne.
12 novembre : Cours 8 Tableau à deux dimensions; Tableau de grandeur dynamique; Introduction des structures; Passage en paramètre de «lignes»; Jeu de tic-tac-toe. 13 novembre : Exercices + laboratoire 6 Calculs sur les graphes ( comparaisons, distance ), calcul d un chemin hamiltonien en utilisant de la récursivité et des tableaux passés en paramètre. 19 novembre : Cours 9 Les structures, accès aux données; Allocation dynamique de la mémoire en C et en C++; Passage en paramètre de structures, de pointeurs; Tableau de structures, ( à n dimension! ); Présentation du projet. 20 novembre : Exercices + Laboratoire 7 Fiche d étudiant, validation. Plan cartésien ( distance, vecteur, distance, produit scalaire et vectoriel ). 26 novembre : Cours 10 Traitement de fichiers (ouverture, lecture, écriture); Lecture, écriture de fichier texte; Lecture,écriture de fichier binaire. 27 novembre : Exercices + laboratoire 8 Traitement de fichier, validation de format, changement de format. 3 décembre : Liste chaînée simple; Validation vide, plein; Recherche dans une liste. 4 décembre : Exercices + projet. Liste d étudiant, sauvegarde et retrait d information.
10 décembre : Cours 12 Liste doublement chaînée; Sentinelle; Algorithme de trie. 11 décembre : Exercices + projet. Trie d un tableau d entier, trie d une liste doublement chaînée. 17 décembre : Cours 13 Révision de l ensemble du cours; Exemple de trace d exécution; Questions de l examen ( ); Évaluation du cours ( ); Remise du projet ( ). Examen trimestriel : 18 décembre Évaluation : Laboratoire et travaux dirigé : 40% Mini-projet : 10% Examen de Mi-session 20% Examen trimestriel 30% Bibliographie : * B.W. Kerninghan et D.M. Ritchie: Le langage C, Masson/Prentice Hall, 1988 * Deitel & Deitel : Comment programmer en C++, Les édition Raynald Goulet, 2001 D.M. Collopy: Introduction to C programming, Prentice Hall, 1997 Hardy, Koffman et Friedman: Problem solving and program design in C, Addison- Wesley, 1993 * M.G. Sobell: A practical Guide to the UNIX System, Benjamin/Cummings, 1995 P.W. Abrahams et B.R. Larson: Unix for the impatient, Addison-Wesley 1996 R. Sirois-Dumais: Initiation au langage C, Presse de l"université du Québec, 1991 * S.P. Harbison et G.L. Steele: Langage C: Manuel de référence, Masson, 1990. Willms, Gerhard : Langage C de poche, Micro Application, 1996 Note : Les références marquées d un astérisque sont mis en réserve à la bibliothèque. Sites intéressants : http://www.developpez.com/c/cours.htm#c http://dimcom.uqac.uquebec.ca/~flemieux/inf119/inf119.html