TD d'Informatique L1 : exercices corrigés sur les bases de la programmation et l'algorithmique, avec méthode pas à pas pour rédiger et structurer chaque solution.
Université - Informatique
Tous les sujets d’Informatique
4 sujets et une fiche de langage C
Auteur : Campus BF
Sommaire
Informatique : codage de l’information, MS-DOS et logique combinatoire
Informatique 2 : changements de base et afficheur 7 segments
Informatique 2 : afficheur hexadécimal à quarante voyants
Algorithmique : algorithmes et langage C
Fiche : éléments du langage C
Informatique : codage de l’information, MS-DOS et logique combinatoire
Module : Informatique · Semestre 1
Question de cours
L’objet d’un système informatique est l’information. Quels sont les 2 constituants de ce système et ses 3 objectifs vis-à-vis de l’information ?
1) Conversions entières
Remplir le tableau suivant :
Décimal Binaire Hexadécimal BCD
35
1101001
3E
10000101
2) Conversion en virgule flottante IEEE 754 (simple précision)
Effectuer les conversions suivantes, en exposant la méthode :
$(5{,}75)_{10}=(0\mathrm{x}\,\text{????????})_{\mathrm{IEEE754}}$
$(0\mathrm{x}2\mathrm{E}710000)_{\mathrm{IEEE754}}=(?)_{10}$
3) Calcul en binaire
Effectuer les opérations suivantes en binaire, en exposant la méthode :
1111111
+ 1111111
---------
1111110
− 111111
---------
1111
× 111
------
101100 ÷ 100
------------
4) Commandes MS-DOS
a) Créer l’arborescence suivante à l’aide des commandes MS-DOS :
C:\
smp
svi
smc
S1
S2
S3
M1
M2
Arborescence à créer
b) Expliquer ce que font les commandes suivantes :
cd c:\smc
dir S3\M* > file1.txt
dir ..\smp > file2.txt
copy file?.txt ..\
5) Réalisation d’un comparateur 2 bits
On compare deux nombres binaires de 2 bits, $A=A_1A_0$ et $B=B_1B_0$ ($A_1$ et $B_1$ étant les bits de poids fort). Les trois sorties sont définies par :
$E=1$ si $A=B$, sinon $E=0$ ; $A=B$ si ($A_1=B_1$ et $A_0=B_0$)
$S=1$ si $A>B$, sinon $S=0$ ; $A>B$ si $A_1>B_1$ ou ($A_1=B_1$ et $A_0>B_0$)
$I=1$ si $A<B$, sinon $I=0$ ; $A<B$ si $A_1<B_1$ ou ($A_1=B_1$ et $A_0<B_0$)
Remplir le tableau logique, puis dessiner le tableau de Karnaugh de la sortie $S$. En déduire la fonction simplifiée de $S$, la factoriser, puis dessiner son logigramme.
$A_1$ $A_0$ $B_1$ $B_0$ $E$ $S$ $I$
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
↑ Retour au sommaire
Informatique 2 : changements de base et afficheur 7 segments
Module : Informatique 2 · Durée : 1 h 30 · Documents non autorisés
Exercices : Conversion d’une base $X$ à une base $Y$
$(1101)_2 = (?)_{10}$ (1 point)
$(1\mathrm{A}7)_{16} = (?)_{10}$ (1 point)
$(123)_6 = (?)_{10}$ (1 point)
$(1\mathrm{ABC})_{16} = (?)_{10}$ (1 point)
$35 = (?)_3$ (1 point)
$(345\mathrm{B})_{16} = (?)_2$ (1 point)
Problème : Afficheur 7 segments (10 points)
X
e0
e1
e2
e3
a
b
c
d
e
f
g
afficheur 7 segments
0 1 2 3
4 5 6 7
8 9 A b
C d E F
Composant $X$ relié à l’afficheur 7 segments (chiffres 0 à F)
Trouver le schéma interne du composant $X$. Ses 4 entrées représentent en binaire un nombre entre 0 et 15 ; ses 7 sorties commandent les segments $a$ à $g$ de l’afficheur, qui doit montrer le chiffre hexadécimal correspondant. Convention : un 0 allume un segment, un 1 l’éteint.
Remarque 1 : Donner toutes les étapes intermédiaires.
Remarque 2 : Présentation notée sur 3 points.
↑ Retour au sommaire
Informatique 2 : afficheur hexadécimal à quarante voyants
Module : Informatique 2 · Durée : 1 h 30 · Documents non autorisés
L’alimentation et les quarante voyants
Un afficheur alphanumérique hexadécimal est réalisé par une matrice de $8\times 5$ diodes électroluminescentes (40 voyants) repérées de $\mathrm{D}_{11}$ à $\mathrm{D}_{85}$ ($i$ = ligne, $j$ = colonne).
La figure du sujet montre, pour chaque chiffre hexadécimal de 0 à F, le motif de diodes allumées / éteintes (ex. : diode $\mathrm{D}_{12}$ allumée, $\mathrm{D}_{15}$ éteinte, $\mathrm{D}_{44}$ allumée…).
Chaque caractère hexadécimal est codé par 5 informations d’entrée $(a,b,c,d,e)$ :
Caractère $a$ $b$ $c$ $d$ $e$
0 1 1 0 0 0
1 0 0 0 0 1
2 0 0 0 1 0
3 0 0 0 1 1
4 0 0 1 0 0
5 0 0 1 0 1
6 0 0 1 1 0
7 0 0 1 1 1
8 0 1 0 0 0
9 0 1 0 0 1
A 0 1 0 1 0
B 0 1 0 1 1
C 0 1 1 0 0
D 0 1 1 0 1
E 0 1 1 1 0
F 0 1 1 1 1
Travail demandé
Compléter le pseudo-tableau de Karnaugh en y plaçant les caractères $0,1,2,\dots,\mathrm{F}$ (les caractères 4, 9 et F sont déjà placés).
$abc$
$de$ 000 001 011 010 110 111 101 100
00 4
01 9
11 F
10
Déterminer l’expression de la fonction erreur $X$ ($X=1$ lorsque la combinaison d’entrée ne correspond pas à un des 16 chiffres affichables).
Câbler $X$ avec uniquement :
Boîtier 1 : 4 portes NAND 2 entrées
Boîtier 2 : 4 portes AND 2 entrées
Boîtier 3 : 4 portes OR 2 entrées
↑ Retour au sommaire
Algorithmique : algorithmes et langage C
Module : Algorithmique · Semestre 2 · Durée : 1 h 30
Question
Si un utilisateur (un client) vous demande de lui faire un programme sur ordinateur pour résoudre un problème donné, quelles sont les 5 étapes par lesquelles vous allez passer pour faire ce qu’il a demandé ?
Exercice 1
Écrire un algorithme qui demande à l’utilisateur un entier $n$ strictement positif et un réel $x$ quelconque, puis calcule et affiche $S_1$, $S_2$ et $S_3$ tels que :
$$\begin{aligned}S_1&=1+2+3+\cdots+n,\\ S_2&=1+x+x^2+x^3+\cdots+x^n,\\ S_3&=1\cdot x+2\cdot x^2+3\cdot x^3+\cdots+n\cdot x^n.\end{aligned}$$
Exercice 2
Écrire un algorithme puis le programme correspondant en langage C , qui lit un entier naturel $n$ puis calcule et affiche le terme $S_n$ de la suite :
$$\begin{cases}S_0=5,\\ S_n=10+3\cdot S_{n-1}&\text{pour } n>0.\end{cases}$$
Exercice 3
Écrire un programme en langage C qui lit un texte de taille maximale 300 caractères, puis affiche :
$N$ = nombre de fois que la lettre 'a' (majuscule ou minuscule) apparaît
$M$ = nombre de mots (nombre d’espaces ' ' plus 1, les mots étant séparés par un seul espace)
$K$ = nombre de paragraphes (nombre de retours à la ligne : caractère '\n' , de code ASCII 10 ; la touche Entrée lue avec getch() renvoie le code 13)
Exercice 4
Écrire l’algorithme qui lit un tableau $T$ de taille $n$ ($1 \le n \le 100$) à éléments entiers, puis calcule et affiche :
la moyenne de tous les éléments
le minimum et le maximum du tableau
Exercice 5 (optionnel)
Écrire en langage C l’algorithme de l’exercice 4, en rajoutant le classement du tableau dans l’ordre croissant .
↑ Retour au sommaire
Fiche : éléments du langage C
Aide-mémoire
Les instructions
if pour les comparaisons :
if (Nombre >= 0)
printf("C'est vrai\n");
else
printf("C'est faux\n");
for pour une boucle à nombre fixe d’itérations :
for (i = 0; i < 20; i++) {
Tableau[i] = i;
}
while et do…while pour boucler tant que la condition est vraie. while évalue la condition avant chaque tour ; do…while l’évalue après (le corps est exécuté au moins une fois) :
i = 0;
while (i < 10) {
Tableau[i] = i;
i++;
}
i = 0;
do {
Tableau[i] = i;
i++;
} while (i < 10);
switch pour départager selon la valeur d’une variable :
switch (i) {
case 1: printf("i vaut un\n"); break;
case 2: printf("i vaut deux\n"); break;
case 3: printf("i vaut trois\n"); break;
default: printf("autre chose\n"); break;
}
Types de variables
Type Exemple de déclaration
int int i, j, k;
short short EntierDe16Bits;
long long EntierDe32Bits;
char char c; (8 bits)
float float VirguleFlottante;
double double HautePrecision;
unsigned char unsigned char Chaine[20];
unsigned char * unsigned char *Pointeur;
int (tableau) int TableauDEntiers[10][4];
Les tailles indiquées (16 bits pour short , 32 bits pour long ) sont celles des compilateurs usuels ; la norme garantit seulement au moins 16 bits pour short et au moins 32 bits pour long .
scanf et printf
scanf("control", &arg1, &arg2, ...);
printf("control", arg1, arg2, ...);
Code Signification
%c caractère
%s chaîne de caractères
%d entier décimal
%f réel [-]mmm.nnnnnn
%e / %E réel mantisse/exposant
%g / %G forme la plus courte entre %e et %f
%o entier octal
%x / %X entier hexadécimal
%u entier non signé
%p pointeur / adresse
Avec scanf , un double se lit avec %lf ; avec printf , %f convient aux float comme aux double .
Exemple de programme simple
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("Bonjour le monde\n");
system("pause");
return 0;
}
system("pause") est propre à Windows : elle garde la fenêtre ouverte à la fin du programme.
Opérateurs
Opérateur Description
+ - * / % Addition, soustraction, multiplication, division, reste (modulo)
++ -- Incrémentation, décrémentation
>> << Décalage de bits
& | ^ ~ ET, OU, OU exclusif, NON binaires
== != Égalité, inégalité
< <= > >= Comparaisons
&& || ! ET, OU, NON logiques
= Affectation simple
+= -= *= /= Affectations composées
↑ Retour au sommaire
Tous les sujets d’Informatique
Auteur : Campus BF