IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Questions d'informatique pour un concours


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 48
    Points : 24
    Points
    24
    Par défaut Questions d'informatique pour un concours
    Bonjour, j'aurais quelques questions à vous poser à propos d'un concours que je dois passer.

    D'abord, je voudrais savoir si quelqu'un peut m'expliquer ce qu'est un type ordinal ?
    Puis, je sais que ça se rapporte à des type de données telle que chaîne de caractères, réel, énuméré, enregistrement mais lequel est du type ordinal ?

    Question à propos des compilateurs : lesquelles sont vrais ?
    a) Un compilateur permet de réduire la taille d'un programme et ainsi d'optimiser la place sur le disque dur
    b) Un compilateur peut permettre de produire des programmes pour un ordinateur différent de celui sur lequel il s'éxécute
    c) Le résultat issu d'un compilateur n'est en général pas directement exécutable

    a mon avis, est vrai seulement b)
    en fait, je me demande si c) n'est pas aussi vrai, car je sais que certains compilateur comme celui de visual basic, génère une entension en .exe après compilation. En cherchant sur internet, j'ai vu que cela s'appelait l'éditions de liens quand un .exe est généré, donc que cela ne ferait pas partie du terme compilation.
    Donc au final, je ne sais pas si la véritable définition d'un compilateur n'est pas seulement de produire un programme en langage machine ou encore assembleur.

    Soit un entier a codé sur 32 bits en représentation non signée ; on suppose que l'on éxecute le programme suivant :

    a <- 1
    for i = 1 to 16 do
    a <- a*4
    done
    print a

    Que va afficher ce programme ?
    a) toujours 0, quel que soit le langage
    b) toujours 1, quel que soit le langage
    c) toujours 4249967296, quel que soit le langage
    d) ce programme va générer un dépassement de capacité pour a qui sera ou ne sera pas détecté en fonction du langage utilisé
    e) aucune des 4 réponses proposés

    A mon avis, ce sera c) car 2^32 = 4249967296, donc a pourra prendre les valeurs comprises entre 0 et 2^32 - 1 soit 4249967295, mais je me demande si quand il y a dépassement, on ne recommence pas à compter, ce qui donnera 0 si on ajoute 4249967295 à 1 si a est codé sur 32 bits en non signé, cela est possible ?

    Sur une machine disposant d'entiers signés et d'un processeur 32 bits, que va donner la multiplication de 123456789*123456789 :
    a) 15241578750190521
    b) -1757895751
    c) 2537071545
    d) cela va générer une erreur
    e) cela dépend du langage employé pour effectuer l'opération

    A mon avis, cela ne dépend pas du type de processeur car sous un intel 32 bits et avec la calculatrice windows, on obtient a) alors je dirais réponse a) est je raison ?

    Merci beaucoup

    PS : désolé, j'ai posté 2 fois

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Heu pour ta question: c) Le résultat issu d'un compilateur n'est en général pas directement exécutable
    Ceci peut être vrai dans la mesure où l'on fait bien la distinction entre la compilation et l'édition de lien dans la question car nous le savons bien, un compilateur produit des fichiers objets que l'éditeur de liens assemble, ce qui produit donc l'exécutable !

    Pour la question sur le programme qui parcours une boucle, tu peut facilement tester ceci en recréant la boucle, cela reviens - si je me trompe pas - à faire 4x4x4...n fois jusqu'à 16 - la fin de la boucle - !


    En fait je ne sais pas si c'est une bonne chose de t'aider dans ce genre de questions...
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 48
    Points : 24
    Points
    24
    Par défaut
    Si, j'ai justement besoin d'aide sur ces dernières questions qui me posent problème. J'aurais ce type de question au concours car elles retombent chaque année.
    Merci quand meme

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ok, donc pour ton programme avec la boucle je dirais qu'il affiche 0, code testé ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
    #include <stdlib.h>
    
    int main &#40;void&#41;
    &#123;
    	unsigned long int a = 1;
    	int i = 1;
    
    
    	for &#40;i = 1; i < 17; i++&#41;
    	&#123;
          a *= 4;
    	&#125;
    
    
       printf &#40;"a = %lu\n", a&#41;;
    
    
    	return EXIT_SUCCESS;
    &#125;
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ces questions sont stupides... trop imprécises !

    Sinon je dirais que les réponses aux deux dernières questions sont d) et e) respectivement.

    --
    Jedaï

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Oui en effet, pour l'avant-derniere question, la réponse pourrait aussi être d), c'est peut être pour cette raison aussi que j'obtiens zero sans avoir d'erreur !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut Re: Questions d'informatique pour un concours
    Bonjour,

    Citation Envoyé par jeje00
    Question à propos des compilateurs : lesquelles sont vrais ?
    a) Un compilateur permet de réduire la taille d'un programme et ainsi d'optimiser la place sur le disque dur
    b) Un compilateur peut permettre de produire des programmes pour un ordinateur différent de celui sur lequel il s'éxécute
    c) Le résultat issu d'un compilateur n'est en général pas directement exécutable
    Réponse : merci de définir ce qu'on entends par compilateur.

    Globalement, un compilateur est un ensemble d'outils permettant de passer d'un langage source à un langage cible.

    Considérant ceci :
    a est fausse, bien évidemment.
    b est vraie, car il est précisé "un" compilateur, et non pas "les compilateurs"
    c : que veut dire "en général" ? Strictement plus de 50 % du temps ?

    Il faut savoir qu'aujourd'hui, la plupart de ce que les développeurs appellent compilateur intègrent un éditeur de lien, qui permet donc de produire des exécutables "directement". En revanche, il est tout à fait possible de faire de la compilation séparée, et donc de recourir explicitement à un éditeur de liens une fois les sources compilées.

    Ensuite, qu'appelle-t-on "directement exécutable" ?
    Si on prends un langage comme le Java, le produit de la compilation est un programme exploitable par une machine virtuelle. Dans ce cas précis, on peut considérer que le programme n'est pas directement exploitable.
    Sauf que si on code en Java, on a pensé à installer la machine virtuelle sur la machine d'exploitation, et le programme est donc directement exploitable ...



    Citation Envoyé par jeje00
    Soit un entier a codé sur 32 bits en représentation non signée ; on suppose que l'on éxecute le programme suivant :

    a <- 1
    for i = 1 to 16 do
    a <- a*4
    done
    print a

    Que va afficher ce programme ?
    a) toujours 0, quel que soit le langage
    b) toujours 1, quel que soit le langage
    c) toujours 4249967296, quel que soit le langage
    d) ce programme va générer un dépassement de capacité pour a qui sera ou ne sera pas détecté en fonction du langage utilisé
    e) aucune des 4 réponses proposés
    Les processeurs disposent d'un flag de débordement de capacité. Il est donc possible d'écrire un langage utilisant ce flag et prévenant du débordement de capacité.
    je me demande même si cela n'est pas possible en assembleur. Pour le savoir, il faut aller poser la question sur le forum consacré à ce langage.


    Citation Envoyé par jeje00
    Sur une machine disposant d'entiers signés et d'un processeur 32 bits, que va donner la multiplication de 123456789*123456789 :
    a) 15241578750190521
    b) -1757895751
    c) 2537071545
    d) cela va générer une erreur
    e) cela dépend du langage employé pour effectuer l'opération

    A mon avis, cela ne dépend pas du type de processeur car sous un intel 32 bits et avec la calculatrice windows, on obtient a) alors je dirais réponse a) est je raison ?
    Non.

    Cela dépend de la gestion de ce qui se passe lors d'une multiplication qui ne tient plus sur un seul registre.
    Voici ce que font la plupart des langages : chaque nombre est codé sur un registre. Afin d'éviter les débordements, le résultat de la multiplication de ces deux entiers est sur deux registres (donc sur 64 bits dans le cas présent).

    En revanche, rien ne t'interdit de créer un langage dont le résultat d'une multiplication de deux entiers 32 bits tient sur un registre 32bits. Dans ce cas, le nombre maximal est 2^32 -1, soit 4294967296, qui est bien inférieur à 15241578750190521.

    Donc à mon sens la réponse est e.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  8. #8
    Invité
    Invité(e)
    Par défaut
    Un nombre ordinal, c'est un nombre qui dénote une position : premier, deuxième etc....

    A l'inverse de cardinal, qui dénote une quantitié : un, deux, trois etc...

Discussions similaires

  1. concours informatique pour travailler pour l'état
    Par 123quatre dans le forum Etudes
    Réponses: 7
    Dernier message: 01/09/2006, 12h02
  2. Questions sur Openldap pour faire PDC
    Par valal dans le forum Réseau
    Réponses: 4
    Dernier message: 20/04/2006, 10h12
  3. question xml / xslt pour tableau a 3 colonnes
    Par taybott dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/10/2005, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo