Skip to content

L1ST – Notes d’Informatique2

Les notes de l’examen final sont disponibles sur le site de la faculté :

http://fs.univ-tlemcen.dz/images/PDF/mardi/notes%20finales%20st_informtique2.pdf

Examen d’Anglais

Voici le sujet de l’examen d’anglais de ce 2e semestre pour les 2e année en Licence d’Informatique :

Examen final L1 ST Informatique2

Voici le sujet de l’examen final d’Informatique2 pour les L1 ST avec les réponses:

L2inf – Solutions du contrôle du S2

Source : Wikipédia

Jeu des Tours de Hanoi en bois avec 8 disques.

Et voici l’énoncé et la solution du contrôle d’Algorithmique de la 2e année de Licence Informatique:

Voici la version complète du programme « Tours de Hanoi » :

/* Tours de Hanoi */
#include <stdio.h>
#include <stdlib.h>


int * construire_tour(int nbdisques)
{
    int * tour = malloc((nbdisques+1) * sizeof(int));
    /* alloue dynamiquement un 'tableau' de nbdisques+1 entiers :
     * chacune des 3 tours est implémentée comme une pile
     * faite d'un tableau dont la 1re case contient le 
     * nombre d'éléments présents dans la pile
     * (le + petit disque = 1, le + grand = nbdisques)
     */

    if (tour==NULL){ // toujours prévoir l'échec d'allocation
        perror("problème d'allocation mémoire"); //affiche l'erreur
        exit(EXIT_FAILURE);
    }    
    void vider(int tour[]);
    vider(tour);
    return tour;
}

void detruire_tour(int *tour)
{
    free(tour); //libère la mémoire occupée par la pile
}

/* nbre_disques - donne le nombre de disques présents dans une tour
 * param : tour : pile de la tour
 *         disque : Nbre de disques
 */
int nbre_disques(int tour[])
{
    return tour[0];
}

/* est_vide - retourne 1 si la tour est vide, 0 sinon */
int est_vide(int tour[])
{
    return tour[0]==0;
}

/* vider - vide la pile donnée en paramètre */
void vider(int tour[])
{
    tour[0]=0;
}

/* empiler - empile un disque sur une tour
 * param : tour : pile de la tour
 *         disque : N° du disque
 */
void empiler(int tour[], int disque)
{
    tour[++tour[0]]=disque;
}

/* sommet - donne le N° du disque en haut de la pile
 * param : tour : pile de la tour
 * retourne : N° du disque au sommet ou 0 si la tour est vide
 */  
int sommet(int tour[])
{
    return tour[tour[0]];
}

/* depiler - dépile un disque de la tour
 * param : tour : pile de la tour
 * retourne : N° du disque dépilé ou 0 si tour vide
 */         
int depiler(int tour[])
{
    if (tour[0])  // ne décrémenter que si pile non vide
        return tour[tour[0]--];
    else
        return 0;
}

/* deplacer - déplace un disque d'une tour à une autre
 * param : source, dest : tours source et destination
 * retourne : N° du disque déplacé ou 0 si pas de disque
 */
int deplacer(int source[], int dest[])
{
    if (est_vide(source))
        return 0;
    int disque=depiler(source);
    empiler(dest,disque);
    return disque;
}

/* affiche le contenu des trois tours
 * (horizontalement, en mode texte et 
 *  sans couleurs pour l'instant :-)
 */
void afficher(int **tour)
{
    for (int i=0;i<3;++i) {
        for (int j=0;j<nbre_disques(tour[i]);++j) 
            printf("%d",tour[i][j+1]);
        puts("");
    }
}

int main(void)
{
    puts("Jeu des Tours de Hanoi\n-------------\n");
    int nbdisques;
    printf("Combien de disques ? ");
    scanf("%d",&nbdisques);
    int *tour[3];
    for (int i=0;i<3;++i)
        tour[i]=construire_tour(nbdisques);
    for (int i=nbdisques;i>0;--i)
        empiler(tour[0],i);
    printf("Donnez les étapes pour déplacer les disques");
    puts(" de la tour 1 à la tour 3 :");
    int coup=0;
    do {
        afficher(tour);
        ++coup;
        printf("Déplacement N°%d :\n",coup);
        printf("-> de la tour N°");
        int src;
        scanf("%d",&src);
        src--;
        printf("<- à la tour N°");
        int dest;
        scanf("%d",&dest);
        dest--;
        if (!est_vide(tour[dest]) &&
             sommet(tour[src])>sommet(tour[dest])){
            puts("Interdit de placer un grand disque sur un petit ");
            coup--;
            continue;
        }
        int disque = deplacer(tour[src],tour[dest]);
        if (!disque){
            printf("Erreur: tour N°%d vide !\n",src+1);
            coup--;
        } else
            printf("Disque N°%d : de %d à %d\n",disque,src+1,dest+1);    
    } while(nbre_disques(tour[2])<nbdisques);
    
    printf("BRAVO ! Jeu terminé en %d coups.\n",coup);
/*
    for (int i=0;i<3;++i)
        detruire_tour(tour[i]);
*/
    int **p=tour;
    while (p-tour<3){
        detruire_tour(*p) ;
        ++p ;
    }
    /* ne pas oublier de faire le ménage et débarrasser la mémoire */
    
}
Source: Wikipédia

Solution pour 4 disques

Vidéo

Free software and the four freedoms

Here is a link to the video of Richard Stallman’s speech that I used for the English course:

Free software and the four freedoms

By: Richard Stallman
Date: 2010 — on software freedom day
Language: English
Duration: 8’21"
Video File: 480p Ogg/Theora (28MB)

This recording is licensed under the Creative Commons Attribution-No Derivative Works 3.0 license.

Here is the transcript of the speech: rms_4freedoms_transcript

And here is the quizz with the 20 True/False questions I asked you during the class: rms_4freedoms_quizz

Programmation en C : cours, livres et liens divers.

Voici des liens menant vers des livres et cours de programmation en C en français :

Vous trouverez les livres suivants à la bibliothèque de la faculté :

  • Programmer en langage C, cours et exercices corrigés. Claude Delannoy. Cote : 000-005.13-35. Livre intéressant, qui présente le langage de façon pédagogique.
  • Exercices en langage C. Claude Delannoy. Cote : 000-005.13-15.
  • Méthodologie de la programmation en C Norme C99-API POSIX. Achille Braquelaire. Cote : 000-005-63. Présente toute la norme ISO de 1999 ainsi que l’API POSIX (interface avec les systèmes de type Unix). Très bon livre, très complet, mais ne convient pas aux débutants en programmation.
  • Initiation à l’algorithmique et à la programmation en C : Cours avec 129 exercices corrigés. Rémy Malgouyres, Rita Zrour, Fabien Feschet. Cote : 000-005-119.

Informatique2 ST

Voici les séries de TD de ce deuxième semestre :

et voilà les séries de TP :

Je vous rappelle que si vous avez besoin de mon aide concernant les cours, les TD ou les TP d’Informatique2, je suis disponible tous les mardis de 11h30 à 13h au département d’Informatique au 2e étage (demandez M. Brikci).

Suivre

Recevez les nouvelles publications par mail.

Rejoignez 25 autres abonnés