diogoAlves

Praticando - Questionário P2 de Introdução à Computação

Feb 27th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.27 KB | None | 0 0
  1. //Questionário sobre a matéria Introdução à Computação.
  2. //Praticando uso de Strings e vetores.
  3.  
  4. #include<stdio.h>
  5. #include<locale.h>
  6. #include<string.h>
  7. #include<stdlib.h>
  8. #include<time.h>
  9.  
  10. int pontuacao, indice, ordem[12];
  11. char sugestao[200];
  12. int processador(){
  13.     int resp=0, acertos=0;
  14.     system("cls");
  15.     for(int i=0;i<10;i++){
  16.         switch (ordem[i]){
  17.         case 1:
  18.             printf("\n\nEm relação à arquitetura, a CPU é representada pelo microprocessador, sendo responsável pela principal função dos microcomputadores, que é o processamento dos dados.\nConceitualmente, a CPU é constituída de:\n");
  19.             printf("\n1 - Registradores / Memória Cache / Coprocessador Aritmético e Lógico\n2 - Registradores / Unidade de Controle / Unidade Lógica e Aritmética\n3 - Buffers / Memória Cache / Coprocessador Aritmético e Lógico\n4 - Buffers / Unidade de Controle / Unidade Lógica e Aritmética\n5 - Registradores / Buffers / Unidade Lógica e Aritmética\nR: ");
  20.             scanf("%d",&resp);
  21.             if(resp==2) acertos++; else strcat(sugestao,"Consultar página 2 do slide \"Aula 14\".\n ");
  22.         break;
  23.         case 2:
  24.             printf("\n\nOs barramentos que interligam processador e MP, indicando a direção do fluxo de sinal de cada um:\n");
  25.             printf("\n1 - Barramento de dados(Bidirecional); Barramento de Endereços(Unidirecional) e Barramento de Controle(Bidirecional)\n2 - Barramento de dados(Undirecional); Barramento de Endereços(Unidirecional) e Barramento de Controle(Unidirecional)\n3 - Barramento de dados(Bidirecional); Barramento de Endereços(Bidirecional) e Barramento de Controle(Unidirecional)\n4 - Barramento de dados(Bidirecional); Barramento de Endereços(Unidirecional) e Barramento de Controle(Bidirecional)\n5 - Barramento de dados(Bidirecional); Barramento de Endereços(Bidirecional) e Barramento de Controle(Unidirecional)\nR: ");
  26.             scanf(" %d",&resp);
  27.             if(resp==1) acertos++; else strcat(sugestao,"Consultar página 3 do slide \"Aula 14\".\n ");
  28.         break;
  29.         case 3:
  30.             printf("\n\nA Unidade Central de Processamento de um computador típico é constituída pela Unidade Lógica Aritmética (ULA) e pela Unidade de Controle (UC).\nUma das atividades realizadas pela UC é:\n");
  31.             printf("\n1 - A execução de instruções em ponto-flutuante\n2 - A execução de todos os tipos de instruções\n3 - A decodificação de instruções\n4 - O armazenamento de instruções em disco\n5 - O gerenciamento da memória dinâmica\nR: ");
  32.             scanf(" %d",&resp);
  33.             if(resp==3) acertos++; else strcat(sugestao,"Consultar página 6 do slide \"Aula 14\".\n ");
  34.         break;
  35.         case 4:
  36.             printf("\n\nQuais são, respectivamente, os registradores responsáveis por:\nArmazenar o endereço de memória da próxima instrução a ser executada;\nIdentificar as operações a serem realizadas relacionadas à instrução a ser exercutada;\nArmazernar a instrução a ser executada.\n");
  37.             printf("\n1 - DI, RI e CI\n2 - CI, DI e RI\n3 - REM, DI e RI\n4 - CI, RI e RDM\n5 - REM, RDM e CI\nR: ");
  38.             scanf(" %d",&resp);
  39.             if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 11 e 12 do slide \"Aula 14\".\n ");
  40.         break;
  41.         case 5:
  42.             printf("\n\nOs registradores utilizados pela CPU e pela memória para comunicação e transferência de informações são, respectivamente:\n");
  43.             printf("\n1 - Contador de Instruções (CI) e Registrador de Dados de Memória (RDM)\n2 - Registrador de Endereços de Memória (REM) e Contador de Instruções (CI)\n3 - Registrador de Dados de Memória (RDM) e Registrador de Endereços de Memória (REM)\n4 - Decodificador de Instruções (DI) e Contador de Instruções (CI)\n5 - Decodificador de Instruções (DI) e Registrador de Dados de Memória (RDM)\nR: ");
  44.             scanf(" %d",&resp);
  45.             if(resp==3) acertos++; else strcat(sugestao,"Consultar página 13 do slide \"Aula 14\".\n ");
  46.             pontuacao=acertos;
  47.         break;
  48.         case 6:
  49.             printf("\n\nQual característica NÃO se refere à memória cache de processadores?\n");
  50.             printf("\n1 - Tem o objetivo de reduzir o tempo de acesso à memória principal.\n2 - Os dados nela armazenados são cópias de parte da memória principal.\n3 - É implementada pelo sistema operacional com suporte do hardware.\n4 - Pode ser inserida diretamente no chip do processador.\n5 - É comumente encontrada em processadores RISC.\nR: ");
  51.             scanf(" %d",&resp);
  52.             if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 11, 12 e 13 do slide \"Aula 15\".\n ");
  53.         break;
  54.         case 7:
  55.             printf("\n\nEm computadores baseados na arquitetura de Von Neumann, assim que a instrução que vai ser executada é buscada da memória principal para a CPU, o sistema efetiva automaticamente a modificação do conteúdo desse registrador de modo que ele passe a armazenar o endereço da próxima instrução na sequência, sendo crucial para o processo de controle e de sequenciamento da execução dos programas.\n\nO texto acima se refere ao registrador conhecido como:\n");
  56.             printf("\n1 - Registrador de Dados de Memória - RDM.\n2 - Registrador de Decodificação de Instruções - RDI.\n3 - Registrador de Endereçamento de Instruções - REI.\n4 - Contador de Instruções - CI.\n5 - Registrador de Instruções - RI.\nR: ");
  57.             scanf(" %d",&resp);
  58.             if(resp==4) acertos++; else strcat(sugestao,"Consultar página 11 do slide \"Aula 14\".\n ");
  59.         break;
  60.         case 8:
  61.             printf("\n\n\"É um sinal de sincronismo, ou seja, é através dele que os componentes internos do processador e também os componentes externos entram em sincronia para poderem transferir dados.\nSe você pegar dois processadores idênticos, o que tiver o sinal de sincronismo mais rápido será obviamente mais rápido, pois poderá transferir os dados (e, consequentemente, processar dados) mais rapidamente.\"\n\nO texto define:\n");
  62.             printf("\n1 - cache\n2 - BIOS\n3 - thread\n4 - core\n5 - clock\nR: ");
  63.             scanf(" %d",&resp);
  64.             if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 7, 8 e 9 do slide \"Aula 15\".\n ");
  65.         break;
  66.         case 9:
  67.             printf("\n\nUma das principais utilidades da memória cache é:\n");
  68.             printf("\n1 - Poder ser reprogramada eletricamente, na própria placa de CPU.\n2 - Armazenar os dados e instruções mais utilizadas pelo processador, permitindo que estes sejam acessados rapidamente.\n3 - Ser uma memória de massa, não volátil, com uma alta capacidade de armazenamento e um custo muito mais baixo que o da memória principal.\n4 - Ser lida pela CPU a qualquer instante, mas não ser gravada. Sua gravação é feita apenas pelo fabricante do computador ou pelo fabricante de memórias.\n5 - Atenuar interferências, quedas de voltagem e outras anomalias na rede elétrica.\nR: ");
  69.             scanf(" %d",&resp);
  70.             if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 11 do slide \"Aula 15\".\n ");
  71.         break;
  72.         case 10:
  73.             printf("\n\nSobre a identificação dos microprocessadores Pentium IV, a inscrição impressa no componente \"3.00GHZ/2M/800\" significa:\n");
  74.             printf("\n1 - Clock externo de 3 GHz, Cache L2 de 2 MB, Clock interno de 800 MHz.\n2 - Clock externo de 3 GHz, Cache L2 de 2.048 KB, Clock interno de 800 MHz.\n3 - Clock interno de 3 GHz, Cache L1 de 2 MB, Clock externo de 800 MHz.\n4 - Clock interno de 3 GHz, Cache L2 de 1.024 KB, Clock externo de 800 MHz.\n5 - Clock interno de 3 GHz, Cache L2 de 2.048 KB, Clock externo de 800 MHz.\nR: ");
  75.             scanf(" %d",&resp);
  76.             if(resp==5) acertos++;
  77.         break;
  78.         }
  79.     }
  80.     pontuacao=acertos;
  81. }
  82. int memoria(){
  83.     int resp=0, acertos=0;
  84.     system("cls");
  85.     for(int i=0;i<10;i++){
  86.         switch (ordem[i]){
  87.         case 1:
  88.             printf("\n\nQual destas memórias também é chamada de Memória Principal?\n");
  89.             printf("\n1 - Flash.\n2 -ROM.\n3 - RAM.\n4 - Cache.\n5 - Virtual.\nR: ");
  90.             scanf("%d",&resp);
  91.             if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 25, 26 e 27 do slide \"Aula 16\".\n ");
  92.         break;
  93.         case 2:
  94.             printf("\n\nDe uma forma geral, as plataformas de hardware de computadores utilizam diversos tipos de memória. Em particular, o elemento que surgiu para ser um intermediário entre o processador e a memória principal, por causa da grande diferença de velocidade entre esses dois componentes, é conhecido como:\n");
  95.             printf("\n1 - BIOS.\n2 - CMOS.\n3 - RAM.\n4 - Cache.\n5 - Memória virtual.\nR: ");
  96.             scanf(" %d",&resp);
  97.             if(resp==4) acertos++; else strcat(sugestao,"Consultar páginas 21, 22, 23 e 24 do slide \"Aula 16\".\n ");
  98.         break;
  99.         case 3:
  100.             printf("\n\nQual é o tipo de memória RAM que é uma memória estática, que tem baixo consumo de energia e é extremamente rápida?\n");
  101.             printf("\n1 - SDRAM\n2 - SRAM\n3 - RDRAM\n4 - DRAM\n5 - EPRAM\nR: ");
  102.             scanf(" %d",&resp);
  103.             if(resp==2) acertos++; else strcat(sugestao,"Consultar página 37 do slide \"Aula 16\".\n ");
  104.         break;
  105.         case 4:
  106.             printf("\n\nEm referência às memórias de um computador, existe uma memória que é utilizada somente para leitura onde seus dados não são perdidos quando o dispositivo é desligado. Estamos falando da memória?\n");
  107.             printf("\n1 - SRAM\n2 - RAM\n3 - ROM\n4 - DRAM\n5 - Cache\nR: ");
  108.             scanf(" %d",&resp);
  109.             if(resp==3) acertos++; else strcat(sugestao,"Consultar página 32 do slide \"Aula 16\".\n ");
  110.         break;
  111.         case 5:
  112.             printf("\n\nSão exemplos de memórias não voláteis:\n");
  113.             printf("\n1 - ERAM e Registradores.\n2 - PROM e RAM.\n3 - Cache e CD-ROM.\n4 - Disco Rígido e Cache.\n5 - ROM e EPROM.\nR: ");
  114.             scanf(" %d",&resp);
  115.             if(resp==5) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 16\".\n ");
  116.             pontuacao=acertos;
  117.         break;
  118.         case 6:
  119.             printf("\n\nUm dos componentes indispensáveis de um computador são as memórias, as quais podem ser classificadas como primárias ou secundárias. Com relação às memórias secundárias sabe-se que:\n");
  120.             printf("\n1 - São voláteis.\n2 - São acessadas diretamente pela CPU.\n3 - Incluem os cartões de memória, as mídias removíveis e os discos rígidos como exemplos.\n4 - Incluem RAM e CACHE como exemplos.\n5 - Armazenam os dados e programas que estão sendo processados pela CPU.\nR: ");
  121.             scanf(" %d",&resp);
  122.             if(resp==3) acertos++; else strcat(sugestao,"Consultar página 14 do slide \"Aula 16\".\n ");
  123.         break;
  124.         case 7:
  125.             printf("\n\nHá, na hierarquia de memória, a mais rápida e mais cara para armazenar um dado. Por esse motivo, sua disponibilidade em um computador é muito limitada, é conhecida como: \n");
  126.             printf("\n1 - Memória flash.\n2 - Memória secundária.\n3 - Memória principal.\n4 - Memória cache.\n5 - Registradores.\nR: ");
  127.             scanf(" %d",&resp);
  128.             if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 16, 17 e 18 do slide \"Aula 16\".\n ");
  129.         break;
  130.         case 8:
  131.             printf("\n\nSIMM e DIMM são tipos de módulos de:\n");
  132.             printf("\n1 - Cache\n2 - BIOS.\n3 - Software.\n4 - Memória ROM.\n5 - Memória RAM.\nR: ");
  133.             scanf(" %d",&resp);
  134.             if(resp==5) acertos++; else strcat(sugestao,"Consultar página 43 do slide \"Aula 16\".\n ");
  135.         break;
  136.         case 9:
  137.             printf("\n\nDiferentes tipos de memória que podem existir em um microcomputador moderno, do mais veloz, com maior custo e menor capacidade de de armazenamento de dados, para o menos veloz, menor custo e maior capacidade:\n");
  138.             printf("\n1 - Registradores, cache, principal e secundária.\n2 - Principal, secundária, cache e registradores.\n3 - Cache, principal, registradores e secundária.\n4 - Cache, principal, secundária e registradores.\n5 - Secundária, registradores, cache e principal.\nR: ");
  139.             scanf(" %d",&resp);
  140.             if(resp==1) acertos++; else strcat(sugestao,"Consultar página 17 do slide \"Aula 16\".\n ");
  141.         break;
  142.         case 10:
  143.             printf("\n\nROM (Read Only Memory) significa memória somente para leitura. É um tipo de memória que, em uso normal, aceita apenas operações de leitura, não permitindo a realização de escritas. Porém é possível alterar seu conteúdo  em circunstâncias específicas. Qual das opções apresenta um tipo ROM cujos dados  podem ser alterados a partir de um software fornecido pelo fabricante da placa-mãe?\n");
  144.             printf("\n1 - PROM\n2 - EEPROM\n3 - EPROM\n4 - ROM\n5 - RAM\nR: ");
  145.             scanf(" %d",&resp);
  146.             if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 32, 33, 34 e 35 do slide \"Aula 16\".\n ");
  147.         break;
  148.         }
  149.     }
  150.     pontuacao=acertos;
  151. }
  152. int barramentos(){
  153.     int resp=0, acertos=0;
  154.     system("cls");
  155.     for(int i=0;i<10;i++){
  156.         switch (ordem[i]){
  157.         case 1:
  158.             printf("\n\nÉ um barramento exclusivo para placas de vídeo:\n");
  159.             printf("\n1 - PCI\n2 - ISA\n3 - AGP\n4 - AMR\n5 - PCI Express\nR: ");
  160.             scanf("%d",&resp);
  161.             if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 4, 5 e 6 do slide \"Aula 17\".\n ");
  162.         break;
  163.         case 2:
  164.             printf("\n\nO barramento PCI Express foi desenvolvido para substituir os barramentos PCI e AGP. Ele não é compatível em termos de software com o barramento PCI, o que significa que os SO e drivers antigos precisam sofrer modificações.\n\n A afirmação acima é:\n");
  165.             printf("\n1 - Verdadeira\n2 - Falsa\nR: ");
  166.             scanf(" %d",&resp);
  167.             if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 7 e 8 do slide \"Aula 17\".\n ");
  168.         break;
  169.         case 3:
  170.             printf("\n\nO recurso Direct Memory Execute permite que a placa de vídeo faça uso de parte da memória RAM do computador como incremento de sua própria memória. Qual barramento abaixo dispõe desse recurso?\n");
  171.             printf("\n1 - AGP\n2 - PCI Express\n3 - PCI\n4 - ISA\n5 - ACR\nR: ");
  172.             scanf(" %d",&resp);
  173.             if(resp==1) acertos++; else strcat(sugestao,"Consultar páginas 5 do slide \"Aula 17\".\n ");
  174.         break;
  175.         case 4:
  176.             printf("\n\nNÃO é uma característica da interface SATA:\n");
  177.             printf("\n1 - Trânsferência de dados em Série\n2 - Hot-swap\n3 - Tecnologia para dispositivos de armazenamento de dados\n4 - Clock maior do que PATA\n5 - Half-Duplex\nR: ");
  178.             scanf(" %d",&resp);
  179.             if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 12 à 17 do slide \"Aula 17\".\n ");
  180.         break;
  181.         case 5:
  182.             printf("\n\nEm 1994, um conjunto de empresas - entre elas, Microsoft, Intel, NEC, IBM e Apple - formou um consórcio para estabelecer um padrão que facilitasse a conexão de dispositivos ao computador. Esse padrão foi chamado de:\n");
  183.             printf("\n1 - PCI\n2 - SSD\n3 - USB\n4 - VGA\n5 - HDMI\nR: ");
  184.             scanf(" %d",&resp);
  185.             if(resp==3) acertos++; else strcat(sugestao,"Consultar página 18 do slide \"Aula 17\".\n ");
  186.             pontuacao=acertos;
  187.         break;
  188.         case 6:
  189.             printf("\n\nNÃO é uma característica do USB:\n");
  190.             printf("\n1 - Padrão de Conexão\n2 - Cabos de ate 6 metros\n3 - Ampla compatibilidade\n4 - Hot-swappable\n5 - Alimentação elétrica\nR: ");
  191.             scanf(" %d",&resp);
  192.             if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 18 à 21 slide \"Aula 17\".\n ");
  193.         break;
  194.         case 7:
  195.             printf("\n\nNÃO é característica do barramento PCI Express:\n");
  196.             printf("\n1 - Compatibilidade de Software\n2 - Podemos encontrar sistemas PCI Express com 1, 2, 4, 8 ou 16 pistas\n3 - Canal exclusivo de comunicação com o chipset\n4 - Full-Duplex\n5 - Desenvolvido para substituir os barramentos PCI e AGP\nR: ");
  197.             scanf(" %d",&resp);
  198.             if(resp==2) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 17\".\n ");
  199.         break;
  200.         case 8:
  201.             printf("\n\nIntroduzido no IBM PC original em 1981, na sua versão de 8 bits. Mais tarde com o aparecimento do IBM PC/AT em 1984 este barramento foi expandido para 16 bits;\n\nA afirmação acima se refere ao barramento:\n");
  202.             printf("\n1 - PCI\n2 - AMR\n3 - CNR\n4 - ISA\n5 - AGP\nR: ");
  203.             scanf(" %d",&resp);
  204.             if(resp==4) acertos++; else strcat(sugestao,"Consultar página 3 do slide \"Aula 17\".\n ");
  205.         break;
  206.         case 9:
  207.             printf("\n\nA característica fundamental do PCI Express é que ele é um barramento ponto a ponto, onde cada periférico possui um canal exclusivo de comunicação com o chipset. No PCI tradicional, o barramento é compartilhado por todos os periféricos ligados a ele.\n\nA afirmação acima é:\n");
  208.             printf("\n1 - Verdadeira\n2 - Falsa\n\nR: ");
  209.             scanf(" %d",&resp);
  210.             if(resp==1) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 17\".\n ");
  211.         break;
  212.         case 10:
  213.             printf("\n\nQual o tipo de transmissão é mais eficiente atualmente, serial ou paralela?\n");
  214.             printf("\n1 - Serial\n2 - Paralela\n3 - Mesma eficiência\n4 - Nenhuma das respostas anteriores\nR: ");
  215.             scanf(" %d",&resp);
  216.             if(resp==1) acertos++; else strcat(sugestao,"Consultar página 30 do slide \"Aula 17\".\n ");
  217.         break;
  218.         }
  219.     }
  220.     pontuacao=acertos;
  221. }
  222. int main(){
  223.     setlocale(LC_ALL,"Portuguese");
  224.     int resposta=0, pontuacaoAnterior[50], entradas=0;
  225.     char jaVisto[5000]=" ", ultimoVisto[15], recomecar[3];
  226.     pontuacao=0;
  227.     printf("Introdução à informática");
  228.     do{
  229.         if(entradas>0) printf("\nÚltima entrada: %s\nPontuação: %d.\n", ultimoVisto,pontuacaoAnterior[entradas-1]);
  230.         for(int i=0;i<10;i++) ordem[i]=0;
  231.         printf("\n\nSelecione o conteúdo: \n1 - Processador\n2 - Memória\n3 - Barramentos\n4 - Histórico\n5 - Sair\nR:");
  232.         scanf(" %d",&resposta);
  233.         srand(time(NULL));
  234.         if(resposta<4){
  235.             for(int i=0;i<10;i++){
  236.                 indice = rand() % 11;
  237.                 for(int c=0;c<=10;c++){
  238.                     if(ordem[c]==indice){
  239.                         indice = rand() % 11;
  240.                         c=-1;
  241.                     }
  242.                 }
  243.                 ordem[i]=indice;
  244.                 //printf("%d",ordem[i]);       
  245.             }
  246.             //system("pause");
  247.         }
  248.         switch (resposta){
  249.             case 1:
  250.                 processador();
  251.                 strcpy(ultimoVisto,"Processador");
  252.                 break;
  253.             case 2:
  254.                 memoria();
  255.                 strcpy(ultimoVisto,"Memória");
  256.                 break;
  257.             case 3:
  258.                 barramentos();
  259.                 strcpy(ultimoVisto,"Barramento");
  260.                 break;
  261.             case 4:
  262.                 printf("\nHistórico de entradas:");
  263.                 printf("%s\nRespectivas notas: ",jaVisto);
  264.                 for(int i=0;i<entradas;i++){
  265.                     if(i==0) printf("%d",pontuacaoAnterior[i]); else printf(" - %d",pontuacaoAnterior[i]);
  266.                 }
  267.             break;
  268.             case 5:
  269.                 strcpy(recomecar,"nao");
  270.                 break;
  271.             default: printf("\nEntrada Inválida.\n"); break;
  272.         }
  273.         if(resposta<4){
  274.             if(pontuacao!=10) printf("\nSugestão:\n%s",sugestao);
  275.             strcpy(sugestao,"");
  276.             pontuacaoAnterior[entradas]=pontuacao;
  277.             if(entradas!=0) strcat(jaVisto," - ");
  278.             entradas++;
  279.             strcat(jaVisto,ultimoVisto);
  280.             printf("\nPontuação: %d", pontuacao);
  281.         }
  282.         if(resposta!=5){
  283.             setbuf(stdin,NULL);
  284.             printf("\nVoltar ao menu inicial? ");
  285.             gets(recomecar);
  286.             system("cls");
  287.         }
  288.     }while(stricmp(recomecar,"sim")==0);
  289.     printf("Boa prova!");
  290.     return 0;
  291. }
Advertisement
Add Comment
Please, Sign In to add comment