- Licence Fondamentale d'Informatique: LFI1
Affichage des articles dont le libellé est LFI1. Afficher tous les articles
Affichage des articles dont le libellé est LFI1. Afficher tous les articles
jeudi 21 novembre 2013

La commande cat

La commande cat (concatenate files) permet différentes fonctions dont la concaténation et l’affichage de contenu de fichiers. Elle ne dispose pas de beaucoup d’options, son affichage est brut.

Afficher un fichier

Si l’on souhaite par exemple afficher le contenu d’un fichier nommé monfichier, alors il suffit simplement de taper la commande cat suivante :
cat monfichier

Affichage d’un fichier page par page (ou ligne par ligne)

Vous l’aurez sans doute remarqué lorsqu’on affiche un fichier de plusieurs page à l’aide de la commande cat, toutes les pages de ce dernier défile à l’écran sans qu’on est la possibilité de stopper ce défilement. Pour afficher un fichier page par page, il est nécessaire d’utiliser conjointement la commande cat et la commande more. La commande more va permettre le défilement de l’affichage ligne par ligne (grâce à la touche entrée du clavier) ou page par page (grâce à la touche espace). Voici un exemple ci dessous :
cat monfichier | more
Nous utilisons ici l’opérateur pipe représenté par le caractère « | », ce dernier permet de rediriger la sortie standard de la commande cat vers l’entrée standard de la commande more. La première page du fichier s’affiche alors à l’écran et nous pouvons faire défiler le fichier, ligne par ligne, grâce à la touche « entrée » ou, page par page, grâce à la touche « espace ».

Afficher les numéros de ligne

La commande cat dispose de l’option –number ou -n permettant d’afficher les numéros de ligne d’un fichier. Exemple :
cat -n monfichier
Il est possible également grâce à l’option « -b » de n’afficher que les numéros des lignes non vides.
cat -b monfichier

Ne pas afficher les lignes vides (retour à la ligne) répétées

La commande cat dispose de l’option –squeeze-blank ou -s qui permet de supprimer les sauts de ligne excédentaires (supérieur à un). Je m’explique, si il y a par exemple cinq sauts de ligne à la suite, la commande cat n’en affichera qu’un seul.
cat -s monfichier

Afficher le contenu de tous les fichiers ayant une extension particulière

Il est possible et très utile d’utiliser les expressions régulières avec la commande cat, parfois il peut nous arriver de souhaiter afficher le contenu de plusieurs fichiers ayant une extension particulière. Par exemple si l’on veut afficher tous les fichiers ayant l’extension ‘.cc’ on peut utiliser la commande suivante :
cat *.cc

Concaténer le contenu de deux fichiers

On peut grâce à la commande cat concaténer deux fichiers, pour cela nous utilisons l’opérateur de redirection « > » . Nous allons rediriger la sortie standard dans un fichier cible. Un exemple sera plus claire. Nous avons deux fichiers nommés ‘fichier1′ et ‘fichier2′, nous souhaitons créer ‘fichier3′ qui sera la concaténation des deux autres. Nous utilisons pour cela la commande suivante :
cat fichier1 fichier2 > fichier3
Au lieu d’afficher le contenu du ‘fichier1′ puis du ‘fichier2′ à l’écran (dit autrement ‘sortie standard’) le résultat est mis dans ‘fichier3′ grâce à l’opérateur de redirection représenté par le caractère « > ».

Afficher les caractères de tabulation

Lors de la programmation de certains script shell, il peut arriver que la présence du caractère tabulation soit gênante. La commande cat donne la possibilité grâce à son option « –show-tabs » ou « -T » de représenter les tabulation par la chaîne de caractères : ^|
cat -T

Afficher l’aide mémoire de la commande cat

Toutes les commandes Linux dispose d’un aide mémoire.
cat --help
dimanche 3 mars 2013

Exercice Algorithme : Le Tri à Bulles


  • Réaliser l'Algorithme du Tri à Bulles 
Principe de la méthode : Sélectionner le minimum du tableau en parcourant le tableau de la Fin au début et en échangeant tout couple d'éléments consécutifs non ordonnés.

Exemple: 
Tri__B


Procédure TriBulles (E/S t : Tableau [1..MAX] d'Entiers, nbElements : Naturel)
Déclaration i,k : Naturel
 
Début
 
    Pour i <-- 0 à nbElements-1 faire
    Pour k <-- nbElements-1 à i+1 faire
       si t[k]
       Echanger(t[k],t[k-1])
       Fin si
    Fin pour
    Fin pour
 
Fin

Exercice langage C adressage des composantes d'un tableau avec les pointeurs


Ecrire un programme qui lit deux tableaux A et B et leurs dimensions N et M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser le formalisme pointeur à chaque fois que cela est possible.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
main()
{
 /* Déclarations */
 int A[100], B[50]; /* tableaux */
 int N, M;  /* dimensions des tableaux */
 int I;     /* indice courant */
 
 /* Saisie des données */
 printf("Dimension du tableau A (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
     {
      printf("Elément %d : ", I);
      scanf("%d", A+I);
     }
 printf("Dimension du tableau B (max.50) : ");
 scanf("%d", &M );
 for (I=0; I<M; I++)
     {
      printf("Elément %d : ", I);
      scanf("%d", B+I);
     }
 /* Affichage des tableaux */
 printf("Tableau donné A :\n");
 for (I=0; I<N; I++)
      printf("%d ", *(A+I));
 printf("\n");
 printf("Tableau donné B :\n");
 for (I=0; I<M; I++)
      printf("%d ", *(B+I));
 printf("\n");
 /* Copie de B à la fin de A */
 for (I=0; I<M; I++)
       *(A+N+I) = *(B+I);
 /* Nouvelle dimension de A */
 N += M; 
  /* Edition du résultat */
 printf("Tableau résultat A :\n");
 for (I=0; I<N; I++)
       printf("%d ", *(A+I));
 printf("\n");
 return 0;
}

Exercices résolus sur les tableaux et les matrices :




EXERCICE 1 :

Écrire un programme C qui permet de saisir N entiers dans un tableau (N<=100). Le programme doit afficher ensuite la somme de ces entiers et  leur maximum.

EXERCICE 2 :

Ecrire un programme qui permet de saisir N (N<=100) réels dans un tableau ainsi qu'un réel x. Le programme doit rechercher si x se trouve dans le tableau et afficher "x se trouve dans le tableau" ou "x ne se trouve pas dans le tableau".

EXERCICE 3

Ecrire un programme qui permet de saisir N (0<N<=50) entiers  dans un tableau T. Le programme doit éclater ce tableau en deux tableau  TP et TN, TP doit contenir les entiers positifs ou nuls de T et TN les négatifs.

EXERCICE 4

Ecrire un programme qui permet de :
1 : saisir N réels dans un  tableau t
2 : Calculer et afficher la moyenne des éléments de ce tableau
3 : Chercher si un réel x appartient à ce tableau ou non
4 : Trier ce tableau par ordre croissant
5 : Afficher les éléments de ce tableau

EXERCICE 5

Meme exercice que le précédent mais cette fois ci utiliser une  fonction pour chaque question.
void saisie(float t[], int n)
 for (i=0;i<n;i++)
 scanf("%f",&t[i]);
 }
 {int i;
 s=0;
 s+=t[i];
 }
{ int i,flag=0;
  if(t[i]==x) flag=1;
}
 { int i,j,pos;
 for (i=0;i<n-1;i++)
 for (j=i+1;j<n;j++)
 aux=t[i];
 t[pos]=aux;
}
{ int i;
 printf("%.2f\n",t[i]);
{ float t[100],x;
int n;
clrscr();
 {printf("Tapez le nombre des r‚els:");
 scanf("%d",&n);}
while (n<=0 || n>100);
saisie(t,n);
printf("La moyenne des éléments est :%.2f\n",moyenne(t,n));
printf("Tapez l'élément … chercher:");
scanf("%f",&x);
if (exist(t,n,x)) printf(" %.2f appartient au tableau\n",x);
else printf(" %.2f n'appartient pas au tableau\n",x);
tri(t,n); affichage(t,n);

EXERCICE 6

Exercice sur les nombres premiers :
Une partie d’une épreuve soumise dans la rubrique épreuves types du menu programmation de ce site.
On rappelle qu’un entier est premier si et seulement si il a une paire de diviseurs composée de 1 et  lui-même (autrement dit s’il a deux diviseurs exactement).
Question 1. Écrire la fonction estPremier(n) qui prend un entier n en argument, et qui renvoie 1 si n est premier et 0 sinon. On appliquera directement la définition des nombres premiers donnée ci-dessus.
On veut maintenant calculer tous les nombres premiers inférieurs à un entier donné n. On va procéder selon deux méthodes différentes.



Question 2. Écrire la fonction petitsPremiers(n) qui prend en argument un entier n ≥ 2, et qui :
1. Range (dans l’ordre croissant) les nombres premiers inférieurs ou égaux à n dans un tableau global  tpr, que l’on supposera assez grand.
2. Range dans une variable globale nbpr le nombre d’entiers rangés dans tpr.
Par exemple pour n = 17, votre fonction devra  affecter à nbpr le nombre 7 et remplir le début de tpr ainsi :
2
3
5
7
11
13
17
……..



Il est assez facile de voir que, pour tester si un entier impair m (m>=3) est premier, il suffit de vérifier que m n’est divisible par aucun nombre premier compris entre 3 et racine carrée de m.
Question 3. Écrire une nouvelle fonction petitsPremiers2(n), qui donne les mêmes résultats que petitsPremiers(n) mais est plus efficace. Cette nouvelle fonction appliquera la remarque ci-dessus, les nombres premiers entre 3 et [√m] étant lus dans le tableau tpr en cours de remplissage.

EXERCICE 7

On désire traiter des matrices carrés d'entiers. Ecrire un programme C qui permet de saisir la dimension N de ces matrices (0<N<=25) et de saisir les éléments de deux matrices A et B et de réaliser les traitements suivants:
1- Afficher les deux matrices A et B sous la forme conventionnelle des matrices.
2- Calculer et afficher la somme des éléments de la matrice A.
3- Calculer la somme des deux matrices A et B et affecter le résultat à la matrice C, puis éditer ce résultat.
4- Calculer le produit des deux matrices A et B et affecter le résultat à la matrice C, puis éditer le résultat.
5- Affecter la matrice transposée de la matrice A à la matrice T et éditer le résultat.

EXERCICE 8

Même exercice que le précédent mais cette fois ci utiliser des fonctions pour réaliser les traitements demandés :
  • Une fonction qui saisie une matrice carrée quelconque.
  • Une fonction qui affiche une matrice carrée quelconque.
  • Une fonction qui retourne la somme des éléments d'une matrice passée comme paramétre.
  • Une fonction qui calcule la somme de deux matrices passées comme paramétres
  • Une fonction qui calcule le produit de deux matrices passées commes parametres
  • Une fonction qui calcule la transposée d'une matrice.

EXERCICE 9: (tableaux dynamiques)

Ecrire un programme en langage C qui utilise des tableaux dynamiques et qui :
  • Permet de saisir n réels (0<n<=100) dans un tableau t
  • D’afficher la moyenne des éléments du tableau t
  • De compter les éléments positifs du tableau t
  • D’éclater le tableau initial t en deux tableaux dynamiques tp et tn , le premier contient les éléments positifs et le deuxième contient les éléments négatifs
  • Trier ces deux derniers tableaux par ordre décroissant
  • Afficher les éléments des deux tableaux dans un ordre décroissant chacun
 
-