EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE



Documents pareils
THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

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

Cours d Algorithmique et de Langage C v 3.0

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Algorithmique et Programmation, IMA

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Compression de Données - Algorithme de Huffman Document de Conception

Les structures de données. Rajae El Ouazzani

Cours Informatique 1. Monsieur SADOUNI Salheddine

Architecture des ordinateurs

Programmation C. Apprendre à développer des programmes simples dans le langage C

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Programmation système I Les entrées/sorties

UE Programmation Impérative Licence 2ème Année

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Corrigé des TD 1 à 5

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Compilation (INF 564)

Structure et fonctionnement d'un ordinateur : hardware

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

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

La carte à puce. Jean-Philippe Babau

Architecture matérielle des systèmes informatiques

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Introduction au langage C

La technologie Java Card TM

TD Architecture des ordinateurs. Jean-Luc Dekeyser

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)

IV- Comment fonctionne un ordinateur?

Examen Médian - 1 heure 30

Rappels d architecture

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Structure de base d un ordinateur

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

Initiation. àl algorithmique et à la programmation. en C

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

Cours 3 : L'ordinateur

Informatique pour scientifiques hiver Plan général Systèmes d exploitation

Algorithmique, Structures de données et langage C

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

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


KL5121. Pour activer des sorties en fonction de la position d'un codeur

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Conventions d écriture et outils de mise au point

Introduction à la Programmation Parallèle: MPI

ALGORITHMIQUE ET PROGRAMMATION En C

Transmissions série et parallèle

Sélection du contrôleur

as Architecture des Systèmes d Information

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Leçon 1 : Les principaux composants d un ordinateur

Cours 7 : Programmation d une chaîne d acquisition

Programmer en JAVA. par Tama

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

Représentation d un entier en base b

Programmation en Java IUT GEII (MC-II1) 1

ACTIVITÉ DE PROGRAMMATION

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

Solutions du chapitre 4

La mémoire. Un ordinateur. L'octet. Le bit

Premiers pas sur l ordinateur Support d initiation

Notions fondamentales du langage C# Version 1.0

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Enseignement secondaire technique

Cours 1 : La compilation

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

Cours d algorithmique pour la classe de 2nde

Cours Informatique Master STEP

Conception de circuits numériques et architecture des ordinateurs

SUPPORT DE COURS. Langage C

ELP 304 : Électronique Numérique. Cours 1 Introduction

Informatique Générale

Les structures. Chapitre 3

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Fiche technique CPU 314SC/DPM (314-6CG13)

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Adressage des données des contrôleurs du WAGO-I/O-SYSTEM 750. Note d application

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Conception des systèmes répartis

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

SYSTÈME DE GESTION DE FICHIERS

I00 Éléments d architecture

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Initiation à l algorithmique

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

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

Transcription:

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0 - Une mauvaise réponse = -1 * * * * * Question 1 : Dans l ordinateur, le programme BIOS (Basic Input Output System) est chargé dans la mémoire : A - de masse B - la RAM (Random Access Memory) C - la ROM (Read Only Memory) Question 2 : La mémoire cache d un ordinateur permet : A - une plus grande sécurité des données B - un accès rapide aux données C - une compression des données Question 3 : La RS232C correspond à : A - une interface de programmation B - une interface de communication C - une application industrielle Question 4 : Le système d exploitation d un ordinateur fait partie : A - du hardware B - du software C - des applications de bases de données Question 5 : La taille d un octet de données correspond à : A - 64 bits B - 1024 bits C - 8 bits Question 6 : Dans un octet, le bit de parité permet : A - de synchroniser l horloge du récepteur B - de détecter les erreurs de transmission C - de gérer le tour de parole Question 7 : Le rôle d un modem est : A - d amplifier le signal B - de protéger l ordinateur des chutes de tension C - de transformer le signal numérique en signal analogique Question 8 : Un caractère ASCII est codé sur : A - 8 bits B - 7 bits

C - 16 bits Question 9 : Un protocole de communication est : A - une autoroute de l information B - une technologie de traitement de l information C - un ensemble de règles et de structures Question 10 : Un processus est : A - un processeur B - une entité exécutable C - un programme de gestion de files d attentes Question 11 : Dans l ordinateur les données sont représentées sous forme : A - de signal électrique analogique B - de signal électrique numérique C - de signal lumineux Question 12 : Dans un langage de programmation les pointeurs permettent : A - de partager une zone de mémoire B - de chaîner les blocs de mémoire C - de transférer des données sans les déplacer Question 13 : La communication entre processus est : A - possible entre plusieurs ordinateurs reliés B - possible dans un seul ordinateur C - impossible Question 14 : Dans une architecture Client/Serveur, le client doit : A - répondre aux requêtes du serveur B - envoyer des requêtes au serveur C - mettre des ressources en réseau Question 15 : Dans une architecture Client/Serveur, le serveur doit : A - répondre aux requêtes des clients B - gérer le tour de parole C - mettre des ressources en réseau Question 16 : La technique de compression de données permet de : A - crypter les données B - réduire la taille des données C - diminuer les coûts de communication Question 17 : Un programme source devient exécutable après avoir été traité par un module appelé : A - un convertisseur B - un compilateur C - un traducteur Question 18 : La technologie multimédia permet : A - de créer une réalité virtuelle B - de stocker plus d informations C - de traiter tout type de données Question 19 : DOS signifie : A - Data Output System

B - Disk Operating System C - Device Open System Question 20 : Dans l UC de l ordinateur, les données circulent : A - en mode parallèle B - en mode série C - en mode asynchrone Question 21 : Quel est le langage le plus proche de la machine? : A - le Pascal B - le C C - l Assembleur Question 22 : Le 68000 Motorola est : A - un microprocesseur B - un lecteur optique C - un réseau industriel Question 23 : En algorithmique on parle de 2 types d algorithmes. Lesquels? : A - algorithme récursif B - algorithme itératif C - algorithme binaire Question 24 : En algèbre de boole, le ou exclusif donne les résultats suivants : A - 1 1 = 0 B - 1 1 = 1 C - 0 1 = 0 Question 25 : La télématique est : A - le traitement de l information par ordinateur B - la télévision numérique C - la fusion de l informatique et des télécommunications

REMARQUE : Les programmes en Pascal et C sont des exemples et peuvent être discutés en terme de construction. Le choix qui a été fait, est celui d une découpe procédurale importante. Cela permet de mieux faire ressortir un algorithme principal. Ensuite chaque tache est détaillée dans la procédure ou fonction correspondante. D autre part, le programme en C n est pas optimisé, et se présente comme une Traduction quasi-directe du programme Pascal. DECOUPAGE Le principe est le suivant : Nous récupérons dans un fichier (FEUILLE.IN) les tailles (longueur et largeur) des deux feuilles. Pour calculer la taille du plus grand carré découpable dans les deux feuilles sans qu il y est de perte, il suffit de déterminer le PGCD des quatre nombres. Ensuite, à l aide de ce dernier, on détermine le nombre de carrés obtenus pour chaque feuille et on les somme, ce qui nous donne le nombre total de carrés. Programme Pascal (TP7) program feuille; uses crt; var Fichier : Text; (* Fichier TEXT pourl'entrée/sortie *) Long,larg, Long2,Larg2 : Byte; (* Taille inférieure à 100 *) TailleMax, NombreTotal : Byte; procedure LectureFichier; (* Lecture des données *) Assign(Fichier,'FEUILLE.IN'); Reset(Fichier); (* Ouverture de FEUILLE.IN en lecture *) Readln(Fichier,Long,Larg); (* Récupération de longueur et largeur *) Readln(Fichier,Long2,Larg2); (* pour les deux feuilles *) Close(Fichier); (* Fermeture de FEUILLE.IN *) function Pgcd(i,j:byte):byte; (* Calcul du PGCD de deux octets *) var reste : byte; (* utilisation du modulo *) while j>0 do (* si i>j un tour pour rien, cela *) (* évite le test et la permutation *) reste := i mod j; i := j; j := reste; Pgcd := i; procedure EcritureFichier; (* Ecriture du résultat *) Assign(Fichier,'FEUILLE.OUT'); Rewrite(Fichier); (* Création de FEUILLE.OUT *)

writeln(fichier,'taille MAXIMUM=',TailleMax); (* Ecriture du Résultat *) writeln(fichier,'nombre TOTAL=',NombreTotal); Close(Fichier); (* Fermeture de FEUILLE.OUT *) procedure CalculeTailleEtNombre; (* Calcul des deux valeurs - appel de Pgcd *) TailleMax := Pgcd(Long,Pgcd(Larg,Pgcd(Long2,Larg2))); NombreTotal:=(Long DIV TailleMax ) * (Larg DIV TailleMax); NombreTotal:=NombreTotal + (Long2 DIV TailleMax ) * (Larg2 DIV TailleMax); LectureFichier; CalculeTailleEtNombre; EcritureFichier; end. Programme C (GCC) #include <stdio.h> #define byte unsigned char FILE *Fichier; /* Fichier TEXT pour l'entrée/sortie */ byte Long, Larg; byte Long2, Larg2; /* Taille inférieur a 100 */ byte TailleMax, NombreTotal; void LectureFichier() /* Lecture des données */ Fichier=fopen("FEUILLE.IN","r"); /* Ouverture de FEUILLE.IN en lecture */ fscanf(fichier, "%d %d", &Long, &Larg); /* Récupération de longueur et */ fscanf(fichier, "%d %d", &Long2, &Larg2); /* largeur pour les 2 feuilles */ fclose(fichier); byte Pgcd(byte i, byte j) /* Calcul du PGCD de deux octets */ byte reste; /* utilisation du modulo */ while (j>0) /* Si i>j un tour pour rien, cela */ /* évite la permutation */ reste = i % j; i = j; j = reste; return (i); void EcritureFichier() /* écriture du resultat */ Fichier = fopen("feuille.out", "w"); /* Création de FEUILLE.OUT */ fprintf(fichier, "TAILLE MAXIMUM=%d\n", TailleMax); /* Ecriture résultat */ fprintf(fichier, "NOMBRE TOTAL=%d\n", NombreTotal); fclose(fichier);

void CalculeTailleEtNombre() /* Cacul des deux valeurs - appel de Pgcd */ TailleMax = Pgcd(Long, Pgcd(Larg, Pgcd(Long2, Larg2))); NombreTotal = (Long / TailleMax) * (Larg / TailleMax); NombreTotal += (Long2 / TailleMax) * (Larg2 / TailleMax); int main() LectureFichier(); CalculeTailleEtNombre(); EcritureFichier(); return (0); HISTOGRAMME Le principe est le suivant : Nous commençons par lire dans un fichier (HISTO.IN) le nombre d entrée. Puis, nous récupérons celles-ci. A chaque fois, que l on trouve un chiffre (0 à 9), nous augmentons de 1 le nombre d apparitions de ce chiffre dans un tableau (tablehisto) précédemment initialisé à zéro. Dans le même temps, nous déterminons quelle est la fréquence d apparition la plus importante. Pour finir, une ligne est créée pour chaque niveau (de cette fréquence maximum jusqu à un ). Pour cela, on pose une étoile si le nombre d apparition est égale à celui de la fréquence traitée et un espace si non. Cette ligne est écrite dans un fichier (HISTO.OUT). Et enfin on écrit la ligne de référence. Programme Pascal (TP7) program histo; uses crt; type T_Vect10Mot = array[0..9] of word; var Fichier : Text; (* Fichier TEXT pour l'entrée/sortie *) NombreEntree : Word; (* Nombre d'entrées, lu en première ligne *) TableHisto : T_Vect10Mot; (* Tableau contenant les fréquences/chiffre *) PlusGrand : Word; procedure InitTableau; (* Initialisation des fréquences zéro *) Var i : Byte; For i:=0 to 9 do TableHisto[i]:=0; procedure LectureFichier; (* Lecture des données *) Var i : Word; Chiffre : Byte; PlusGrand:=0; (* Initialisation de la plus grande fréquence zéro *) Assign(Fichier,'HISTO.IN'); Reset(Fichier); (* Ouverture de HISTO.IN en lecture *) Readln(Fichier,NombreEntree); (* Récupération du nombre d'entrées *) for i:=1 to NombreEntree do Read(Fichier,Chiffre); (* Lecture des chiffres et mise jour *) Inc(TableHisto[Chiffre]); (* de leur fréquence d'apparition *) if TableHisto[Chiffre]>PlusGrand then PlusGrand:=TableHisto[Chiffre];

Close(Fichier); (* Fermeture de HISTO.IN *) Procedure EcritureFichier; (* Ecriture du résultat *) Var i,j : Word; Ligne : String[20]; (* 20 caractères de longueur/ligne *) Assign(Fichier,'HISTO.OUT'); Rewrite(Fichier); (* Création de HISTO.OUT *) For i:=plusgrand downto 1 do Ligne:=''; for j:=0 to 9 do (* Mise en place des '*' de l'histogramme *) (* et décrément des fréquences des chiffres *) if TableHisto[j]=i then (* concernés *) Ligne:=Ligne+'* '; Dec(TableHisto[j]); end else Ligne:=Ligne+' '; writeln(fichier,ligne); writeln(fichier,'0 1 2 3 4 5 6 7 8 9'); Close(Fichier); (* Fermeture de HISTO.OUT *) InitTableau; LectureFichier; EcritureFichier; end. Programme C (GCC) #include <stdio.h> #define Word unsigned int FILE *Fichier; /* Fichier TEXT pour l'entree/sortie */ Word NombreEntree; /* Nombre d'entrees, lu en premiere ligne */ Word TableHisto[10]; /* Tableau contenant les frequences/chifre */ Word PlusGrand; void InitTableau() /* Initialisation des frequences a zero */ Word i; for ( i=0; i<=9; i++ ) TableHisto[i]=0; void LectureFichier() /* Lecture des donnees */ Word i; Word Chiffre; PlusGran /* Initialisation de la plus grande frequence a zero */ Fichier = fopen("histo.in", "r"); /* Ouverture de HISTO.IN en lecture */

fscanf(fichier, "%d", &NombreEntree); /* Recuperation du nombre d'entrees */ for (i=0; i<nombreentree; i++) fscanf(fichier, "%d", &Chiffre); /* Lecture des chiffres et mise a jour */ TableHisto[Chiffre]++; /* de leur frequence d'apparition */ if (TableHisto[Chiffre]>PlusGrand) PlusGrand = TableHisto[Chiffre]; fclose(fichier); /* Fermeture de HISTO.IN */ void EcritureFichier() /* Ecriture du resultat */ Word i; Word j; char Ligne[21]; /* 2*10 caracteres de longueur/ligne + 0 terminal */ Fichier = fopen("histo.out", "w"); /* Creation de HISTO.OUT */ for (i = PlusGrand; i>0; i--) Ligne[0] = 0; for (j=0; j<=9; j++) /* Mise en place des '*' de l'histogramme */ /* et decrement des frequences des chiffres */ if (TableHisto[j] == i) /* concernes */ strcat(ligne, "* "); TableHisto[j]--; else strcat(ligne, " "); fprintf(fichier, "%s\n", Ligne); fprintf(fichier, "0 1 2 3 4 5 6 7 8 9\n"); fclose(fichier); /* Fermeture de HISTO.OUT */ int main() InitTableau(); LectureFichier(); EcritureFichier(); return (0);