Outils logiciels de base ELE002 ELE002 Outils logiciels de base • Objectifs pédagogiques Acquérir les bases de la programmation et savoir utiliser quelques logiciels parmi les plus courants. Cet enseignement est organisé à partir de cours et de travaux pratiques. • Capacité et compétences acquises Connaissances des outils informatiques du technicien . • Organisation Nombre de crédits enseignements : 8 ECTS Type de la formation : Cours • Contenu de la formation Première partie La programmation en langage C Les principes, les variables, l'affectation, les instructions élémentaires, les boucles. Les fonctions, les tableaux et les pointeurs. L'utilisation de logiciels Le système d'exploitation. Présentation de linux. Deuxième partie La programmation en langage C Les chaines de caractères, les structures et les fichiers. L'utilisation de logiciels Le traitement de texte. Le tableur. Initiation à Matlab Les exercices sont effectués en séance par les auditeurs sur ordinateurs. Objectifs • Apprendre à programmer en langage C • Appréhender la structure des systèmes informatiques • Utiliser les environnements de développement • Connaître les outils informatiques utiles au domaine de l’Électronique tels que : - Matlab (et ses alternatives gratuites) - Excel, Word, etc. Supports • Polycopié "Outils logiciels de base" ; code ELE002 ; C. Alexandre & C. Pautot Environ 10€ • CDROM (vendu 1€) contenant le cours en version pdf ainsi que d'autres cours et les logiciels utilisés durant l'année (Codeblocks, Visual studio, Octave, Scilab, OpenOffice, …) Déroulement • • • • • • • • • Bases du langage C (3 à 4 séances) Programmation "d'algorithmes élémentaires" (5 à 6 séances) Fonctions, pointeurs et tableaux en C (7 à 8 séances) Projet Mastermind (3 à 4 séances) 1er Examen (fin février ou début mars) Chaînes de caractères, structures, fichiers (7 à 8 séances) Introduction à Matlab (Octave, Excel, ...) 2ième Examen (début juin) Examen de rattrapage (mi juin) Bases du langage C (3 à 4 séances) • Structure d'un système informatique (ordinateur, µP, DSP, …) • Programmation en langage "évolué" (langage C) • Programme • Environnement de développement (Codeblocks) Structure d'un système informatique Mémoire permanente : Disque dur (lenteur) ROM (Read Only Memory) Clavier, capteurs, … µP RAM Ecran, afficheurs, commandes, … (Random Access Memory) Programmation en langage "évolué" Les premières machines étaient programmées en "langage machine" : Suite d'instructions exprimées en binaire et directement exécutables par le système. Exemple : Charger une valeur depuis la case mémoire 68 après celle pointée par le registre 3 dans le registre 8 : 100011 00011 01000 000000000001000100 op | rs | rt | adresse Inconvénient : très difficile pour l'homme habitué aux langages évolués Alternative : 100011 00011 01000 000000000001000100 35 3 8 68 Langage Assembleur Idée : utiliser des mnémoniques : 100011 00011 01000 000000000001000100 load r3 r8 68 Exemple tiré de Wikipedia : .global _start BONJ: .ascii _start: mov mov mov mov int mov mov int "Bonjour\n" $4 , %eax $1 , %ebx $BONJ , %ecx $8 , %edx $0x80 ; ; ; ; ; ; $1 $0 $0x80 ; Mettre 1 dans eax (appel système ''Exit'') ; Mettre 0 dans ebx (valeur de retour du programme) ; Interruption 0x80, exécutant un appel système sous Linux) , %eax , %ebx Définition en mémoire de la chaîne à afficher. Mettre 4 dans le registre eax (appel système '''Write'') Mettre 1 dans le registre ebx (descripteur de fichier ''STDOUT'') Mettre l'adresse mémoire de notre chaîne dans ecx Mettre la taille de la chaîne dans edx Interruption 0x80, exécutant un appel système sous Linux) Inconvénient : pénible, peu productif et surtout "non portable" Langage évolué Exprimer les tâches à exécuter dans un langage simple dont les règles syntaxiques sont claires et faciles à retenir pour l'Homme. Exemple : y=2*x+b Inconvénient : Nécessité de traduire les instructions de haut niveau en langage machine (traduction automatique sous optimalité) Avantages : productivité accrue, portabilité Le langage C est le langage évolué le plus utilisé. Il en existe d'autres : Fortran, Pascal, Ada, Programmation rigoureuse et résultats de grande valeur (majorité des applications) Très bonne protection du code Tendance : Langages interprétés (traduction à la volée) : Basic, langage de script (sh, PHP, Perl, Python, Tcl, …), Java, Matlab, … Programmation rapide mais exécution plus lente et nécessité d'un interpréteur Protection difficile Programme Code source écrit par le programmeur : #include <stdio.h> #include <stdlib.h> int main() { printf("Bonjour\n"); return 0; } Puis traduit en code exécutable : Code source bonjour.c compilation Executable traduction Code objet Bonjour.o Bonjour.exe Edition de liens Environnements de développement