6TT. Notes de cours INFORMATIQUE LOGIQUE. Marc Liégeois. Ingénieur civil. CFWB Compétences - Logique - 6 ème. Page 1 sur 24.

Documents pareils
Les structures. Chapitre 3


1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programmation C++ (débutant)/instructions for, while et do...while

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Bases de programmation. Cours 5. Structurer les données

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Claude Delannoy. 3 e édition C++

Cours d algorithmique pour la classe de 2nde

Java Licence Professionnelle CISII,

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Cours d Algorithmique et de Langage C v 3.0

Algorithmique et programmation : les bases (VBA) Corrigé

Cours d initiation à la programmation en C++ Johann Cuenin

Notions fondamentales du langage C# Version 1.0

Introduction au langage C

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Programme Compte bancaire (code)

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Introduction à MATLAB R

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Algorithmique et Programmation, IMA

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Programmer en JAVA. par Tama

Les structures de données. Rajae El Ouazzani

V- Manipulations de nombres en binaire

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Initiation à la programmation en Python

Présentation du PL/SQL

Corrigé des TD 1 à 5

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Introduction à l algorithmique et à la programmation M1102 CM n 3

Chap III : Les tableaux

1.6- Génération de nombres aléatoires

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Organigramme / Algorigramme Dossier élève 1 SI

Recherche dans un tableau

I. Introduction aux fonctions : les fonctions standards

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours Informatique Master STEP

Chapitre 1 : La gestion dynamique de la mémoire

L ALGORITHMIQUE. Algorithme

UE C avancé cours 1: introduction et révisions

Algorithmique, Structures de données et langage C

Plan du cours. Historique du langage Nouveautés de Java 7

Le langage C. Séance n 4

Présentation du langage et premières fonctions

TP 1. Prise en main du langage Python

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Principes des langages de programmation INF 321. Eric Goubault

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

STAGE IREM 0- Premiers pas en Python

Programmation Classique en langage C

Architecture des Systèmes d Information Architecture des Systèmes d Information

Les chaînes de caractères

Corrigés des premiers exercices sur les classes

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

TP, première séquence d exercices.

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Travaux Dirigés n 1 : chaînes de caractères

Conventions d écriture et outils de mise au point

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

et Programmation Objet

TP : Gestion d une image au format PGM

Introduction au pricing d option en finance

Les arbres binaires de recherche

Programmation en langage C

Algorithmique et structures de données I

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TD3: tableaux avancées, première classe et chaînes

Projet Active Object

Les fichiers. Chapitre 4

INFO-F-105 Language de programmation I Séance VI

CHAPITRE V. Recherche et tri

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

La gestion des exceptions

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Utilisation d objets : String et ArrayList

1 Lecture de fichiers

Définitions. Numéro à préciser. (Durée : )

4. Groupement d objets

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Premiers Pas en Programmation Objet : les Classes et les Objets

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Découverte de Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Analyse de sécurité de logiciels système par typage statique

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transcription:

6TT Notes de cours INFORMATIQUE LOGIQUE Ingénieur civil Page 1 sur 24

Préliminaires Le cours de logique s appuie (notamment en deuxième partie) sur un langage de programmation appelé : Langage C Nous introduirons le C++ qui lui est un langage orienté objet. Le C peut être comparé à un assemblage de petites briques constituant un tout. Chaque petite brique serait alors assimilée à une fonction, leur assemblage formant l application. Une fonction est en effet une petite «boîte opaque» à laquelle on passe des arguments. L exécution de l algorithme qui la compose permet de calculer un résultat qui sera retourné à l application sous forme de paramètres. La fonction d entrée s appelle void () Nous verrons que : Une fonction est constituée par un corps délimité par des accolades ouvrante et fermente. Des tests logiques composés d une entrée et deux sorties régies par une ou des conditions. Une force du langage que sont les boucles : Une boucle est un procédé qui permet d exécuter un certain nombre de fois un même corps de programme sans devoir ainsi le répéter artificiellement. Nous aurons les boucles : For (i=0 ; i<10 ; i++) { } While cin i ; while (i<10) { cin i} Do While Do { cin i ;} while (i<10) ; Les fonctions reprenant des passages par valeurs et des passages par références (surtout en 6TT). Des tableaux à une dimension et à deux dimensions. Le shiftage unaire. Les structures amenant le concept d enregistrements de fichiers avec un abord de classes. De nombreux exemples seront abordés en logique et finalisés dans leur concept en laboratoire informatique Page 2 sur 24

Chapitre 1 Etablir un flux de traitement d information 4.1. Structures alternatives Remarque : Les points 1, 2 et 3 sont vus en 5TT, c est pourquoi nous commençons ici par le point 4.1 4.1.1. Ecriture d une condition simple Une condition simple s applique dans: Un test logique : IF (i < 10) { } ELSE { } Remarque: Les exemples ci-dessous ne reprennent pas les caractères accentués, de ce fait certaines fautes d orthographes apparaissent. Figure 1 Page 3 sur 24

4.1.2. Ecriture d une condition complexe Une condition complexe fait entrer des opérateurs logiques tels que : OU logique qui s écrit : ET logique qui s écrit : && Quant au test d égalité, il s écrit : == Exemple : tester si la variable i vaut 10 IF (i==10) { } Figure 2 4.1.3. Ecriture de structures alternatives imbriquées Nous voyons qu il est possible d écrire des tests logiques comprenant plusieurs variables. Il est aussi possible d imbriquer ces tests logiques et donc un test IF() peut comprendre un autre test IF(). Page 4 sur 24

Figure 3 4.2. Structures itératives 4.2.1 Ecriture d une boucle (initialisation, condition sortie) Une itération est une répétition d un même code avec toutefois variations possibles des variables qui le compose. Dans la langage C nous parlerons de boucles. Nous disposons essentiellement de trois formes de boucles : 1. FOR (i=0; i<10; i++) { } que nous noterons : initialisation ; condition ; incrémentation 2. Cin i ; WHILE (i<10) { cin i ;} avec une attribution de valeur à la variable condition pour déterminer si la boucle sera effectuée lors de l exécution de l application 3. D0 { cin i ; } WHILE (i<10); cette boucle est toujours exécutée une fois. Attribution de valeur à la variable condition pour déterminer si la boucle est réexécutée Page 5 sur 24

1.1. Boucle for Figure 4 Remarque : La variable i de contrôle de la boucle FOR varie depuis zéro, jusque strictement plus petit que 10, c est-à-dire 9, par incrément de 1 i++ Nous voyons donc que les valeurs de i vont de 0 à 9 Dans le cas d une boucle FOR, la variable de contrôle de la boucle varie de par la conception de la boucle. Le développeur de l application ne doit pas le faire varier. Nous pouvons cependant nous en servir comme le montre l application ci-dessus. L application précédente montre qu il est facile de se prémunir contre les encodages de valeurs de caractères spéciaux et ainsi protéger l application de ces valeurs indésirables. Page 6 sur 24

1.2. Boucle While () Figure 5 Remarque : Contrairement à la boucle FOR, la boucle WHILE ne fait pas varier elle-même la valeur d une variable de contrôle. Nous ne devons pas non plus exécuter le nombre de fois la boucle selon la variation de cette variable de contrôle. Nous pouvons en effet décider nous-mêmes d interrompre le bouclage en attribuant à la variable de test la valeur de sortie ce qui en soit est un avantage Insistons sur la structure de cette boucle qui demande une attribution de valeur à la variable test avant d entrer dans la boucle et donc pour décider si nous entrons bel et bien une première fois dans la boucle et une nouvelle demande d attribution à la variable test à la fin de l écriture de la boucle pour savoir si nous continuons à boucler ou bien si nous sortons de l exécution de la boucle. Page 7 sur 24

1.3. Boucle Do WHILE () Figure 6. Remarque : Contrairement à la boucle While () la boucle Do While () ; est exécutée une première fois sans le demander : en effet l encodage de la variable de test s effectue à la dernière instruction de la boucle. Remarquons d emblée qu il y a un point-virgule après le While () ; Cette boucle, comme nous le verrons plus tard lors des appels de fonctions (voir préliminaire), sera beaucoup utilisée pour afficher un menu et notamment la valeur pour sortir de l exécution de l application. 4.2.2. Initialiser et utiliser un compteur Ce point est abordé en 1.2. et 1.3. lors des descriptions de la boucle While () et de la boucle Do While () ; Page 8 sur 24

4.2.3. Imbriquer des structures itératives Il est facile de combiner les boucles que nous venons de développer Soit deux boucles FOR imbriquées Figure 7. Une autre façon d imprimer : Utilisation de printf () http://www.linux-france.org/prj/embedded/sdcc/sdcc_course.formatted_io.html Page 9 sur 24

Organigramme Un organigramme informatique est un agencement de symboles qui représentent structure Exercice 1 : Reprenons l organigramme de l application qui affiche : «Bonjour Madame», «Bonjour Mademoiselle», «Bonjour Monsieur», selon le cas de l application. Celle-ci peut être développée à l aide d un langage comme le C++. Le concept peut également servir à représenter sous forme d un graphique organisé avec logique les séquences d un processus de traitement, qu il soit de programmation ou d exécution sur une chaine de production. Le lien ci-dessous reprend sous forme d organigramme les différentes organisations de boucles d un langage de programmation (c++, Visual Basic ) : http://troumad.developpez.com/c/organigrammes/ 4.3. Algorithmes de base Il est évidemment possible de mettre en relation des variables dans une expression. Figure 8 Page 10 sur 24

4.4. Tableaux 4.4.1. Déclaration de tableau statique + utilisation d indice Un tableau, aussi appelé variable indicée, peut être à une ou deux dimensions. Commençons par les premiers. Chaque indice repère un élément dans le tableau. Remarque importante : pour l encodage nous utiliserons une boucle While () ou bien Do While () et pour l affichage une boucle FOR dont la variable de contrôle se réfère au nombre d éléments encodés Figure 9 Page 11 sur 24

4.4.2. Sommations et moyennes Reprenons l exemple précédent et ajoutons le calcul de moyenne des valeurs et de somme des valeurs des éléments du tableau à 1 dimension. Lors d une division, le résultat prend le type du numérateur et dénominateur. C est ainsi que, même si le type de la variable moyenne est float, si le numérateur et le dénominateur sont de type int, le résultat sera affiché comme un int, sauf si nous appliquons un casting au numérateur ou au dénominateur, car dans ce cas l affichage se fera à partir du type le plus précis (dans notre cas : float) Figure 10 Page 12 sur 24

4.4.3. Insertion et suppression de données dans un tableau Nous allons anticiper à propos de notions : Fonctions Appel de fonctions par référence (c'est-à-dire par pointeur) L objectif premier se trouve dans l écriture des fonctions qui se trouvent à la page suivante. En effet nous allons attribuer à un élément i la valeur de l élément i+& dans le cas d une suppression et i-1 en partant de la fin dant le cas de l ajoute, car nous insérons ainsi une valeur à l élément i Figure 11 Page suivante écriture des fonctions : ajout suppres Page 13 sur 24

Figure 12 int t [10] ; est la déclaration d un tableau à 1 dimension comportant 10 éléments int* t est la déclaration d un pointeur sur le tableau t (qui est l adresse en mémoire de l élément 0 du tableau Exercice : Reprendre cet exemple sans le copier et comprendre les processus. Veuillez me poser des questions à ce propos car notons tout de suite qu il s agit de notions d examen Page 14 sur 24

4.4.4. Déclaration et manipulation de tableaux multidimensionnels Soit un tableau à deux dimensions int t [10][5] ; déclaration d un tableau t comportant 10 lignes et 5 colonnes Figure 13 Page 15 sur 24

Chapitre 2 5. Construire un programme modulaire 5.1. Fonction, passage par valeurs et par références Disons tout de suite qu il y a : 1. Passage par valeurs : ce sont les valeurs des variables arguments qui sont transmises à la fonction 2. Passage par références : ce sont les adresses des variables arguments qui sont transmises à la fonction L exemple suivant est l illustration d un passage par valeur : Figure 14. Page 16 sur 24

L exemple suivant est l illustration d un passage par référence : Figure 15 5.2. Etablissement d une valeur de retour Lorsque nous plaçons void (qui veut dire «rien du tout») devant le nom d une fonction, cela veut dire que cette fonction ne renvoie rien, qu elle ne retourne pas une valeur après l exécution de l algorithme qu elle renferme. Par contre lorsqu un type (int, float ) est renseigné devant le nom d une fonction, cela veut dire que la fonction retourne un résultat de type indiqué Exemple : int addition (int*, int*) ; Dans ce cas, nous transférons deux arguments par référence de type integer et la fonction renvoie un résultat de type integer C est cette notion que nous développons dans l exemple suivant. Page 17 sur 24

Fonction passage par référence avec return Figure 16. 5.3. Déclaration de variables globales et locales 5.3.1. Variables globales Une variable globale se déclare en dehors de la fonction main() et en dehors de tout fonction. Si, comme je le suggère, la fonction main() est la première fonction (se trouve audessus) de notre application, les variables globales sont déclarées au-dessus de la fonction main(). De cette façon ces variables sont connues déclarées pour toute l application, même s il y a d autres fonctions que la fonction principale main(). 5.3.2. Variables locales Une variable locale est déclarée à l intérieur d une fonction et est seulement connue à l intérieur de cette fonction. Si nous utilisons plusieurs fois le même nom de variable dans des fonctions différentes et déclarées en variables locales, C++ ne se «mélangera» pas car ces variables sont alors connues à des niveaux différents : notion«empilages» Page 18 sur 24

5.4. Récursivité Fonction qui s auto appelle Figure 17 En effet : 5 * 4 * 3 * 2 * 1 = 120 Page 19 sur 24

Chapitre 6. 6.1. Algorithmes de recherches et de tris. 6.1.1 Etablissement des structures physiques et logiques des données C est IBM (Industrial Business Machine), qui s appelle maintenant Lenovo, qui a créé dans les années 70 le concept de fichiers physiques (qui contiennent les données) et de vues logiques, lesquelles permettaient d accéder aux données à partir de différents tris préétablis. Considérons une structure véhiculée par une variable indicée de type struct. Durant l encodage nous approvisionnerons en valeurs une deuxième variable indicée qui contiendra le champ constituant l argument de recherche. 6.1.2. Recherche séquentielle Soit donc la structure «SIGNA» et la variable indicée «rech». Page 20 sur 24

Figure 18 Page 21 sur 24

6.1.2 Recherche dichotomique. Cette recherche doit s effectuer à partir d une liste indicée dont les éléments sont triés au départ. Cette notion permet d effectuer une recherche plus rapide que lors d une recherche séquentielle durant laquelle tous les éléments de la liste sont parcourus jusqu à ce que la recherche aboutisse. La recherche dichotomique divise un certain nombre de fois le nombre d éléments visités par la recherche. Soit une liste de 10 éléments triés au départ par ordre numérique croissant Liste (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) De façon simplifiée : Recherche séquentielle : nous effectuons 10 fois une boucle. Recherche dichotomique : nous divisons le nombre d éléments par 2 et retenons la valeur de cet élément. Si la valeur recherché est inférieure, nous effectuons une boucle depuis le début jusqu au milieu. Si la valeur recherchée est plus grande, nous effectuons une boucle depuis le milieu jusqu à la fin Figure 19. Page 22 sur 24

6.2. Tri d un ensemble de données L algorithme de tri «shell Metzner» regroupe deux ensembles de données. Le nombre total des éléments de liste à trier est divisé par deux. Les deux premiers éléments de ces ensembles sont comparés, ensuite les deux suivants et ainsi de suite jusqu à ce qu il n y ait plus de permutations à effectuer // Shell-Metzner.cpp : définit le point d'entrée pour l'application console. // #include "stdafx.h" #include <iostream> using namespace std; void main () { int t[10]={10,2,5,15,35,1,56,99,6,9}; int i, j, n=10, l, w; l = n; l = int (l/2); while (l!= 0) { for (j=0; j<n-l; j++) { i = j; while (i>=0) { if (t[i]>t[i+l]) { w = t[i]; t[i] = t[i+l]; t[i+l] = w; } i = i-l; } } l = int (l/2); } for (i=0; i<n; i++) { cout << t[i] << endl; } } system ("Pause"); Figure 20 Page 23 sur 24

Figure 21. Page 24 sur 24