Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Questionário sobre a matéria Introdução à Computação.
- //Praticando uso de Strings e vetores.
- #include<stdio.h>
- #include<locale.h>
- #include<string.h>
- #include<stdlib.h>
- #include<time.h>
- int pontuacao, indice, ordem[12];
- char sugestao[200];
- int processador(){
- int resp=0, acertos=0;
- system("cls");
- for(int i=0;i<10;i++){
- switch (ordem[i]){
- case 1:
- 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");
- 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: ");
- scanf("%d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar página 2 do slide \"Aula 14\".\n ");
- break;
- case 2:
- printf("\n\nOs barramentos que interligam processador e MP, indicando a direção do fluxo de sinal de cada um:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==1) acertos++; else strcat(sugestao,"Consultar página 3 do slide \"Aula 14\".\n ");
- break;
- case 3:
- 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");
- 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: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar página 6 do slide \"Aula 14\".\n ");
- break;
- case 4:
- 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");
- 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: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 11 e 12 do slide \"Aula 14\".\n ");
- break;
- case 5:
- printf("\n\nOs registradores utilizados pela CPU e pela memória para comunicação e transferência de informações são, respectivamente:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar página 13 do slide \"Aula 14\".\n ");
- pontuacao=acertos;
- break;
- case 6:
- printf("\n\nQual característica NÃO se refere à memória cache de processadores?\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 11, 12 e 13 do slide \"Aula 15\".\n ");
- break;
- case 7:
- 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");
- 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: ");
- scanf(" %d",&resp);
- if(resp==4) acertos++; else strcat(sugestao,"Consultar página 11 do slide \"Aula 14\".\n ");
- break;
- case 8:
- 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");
- printf("\n1 - cache\n2 - BIOS\n3 - thread\n4 - core\n5 - clock\nR: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 7, 8 e 9 do slide \"Aula 15\".\n ");
- break;
- case 9:
- printf("\n\nUma das principais utilidades da memória cache é:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 11 do slide \"Aula 15\".\n ");
- break;
- case 10:
- printf("\n\nSobre a identificação dos microprocessadores Pentium IV, a inscrição impressa no componente \"3.00GHZ/2M/800\" significa:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++;
- break;
- }
- }
- pontuacao=acertos;
- }
- int memoria(){
- int resp=0, acertos=0;
- system("cls");
- for(int i=0;i<10;i++){
- switch (ordem[i]){
- case 1:
- printf("\n\nQual destas memórias também é chamada de Memória Principal?\n");
- printf("\n1 - Flash.\n2 -ROM.\n3 - RAM.\n4 - Cache.\n5 - Virtual.\nR: ");
- scanf("%d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 25, 26 e 27 do slide \"Aula 16\".\n ");
- break;
- case 2:
- 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");
- printf("\n1 - BIOS.\n2 - CMOS.\n3 - RAM.\n4 - Cache.\n5 - Memória virtual.\nR: ");
- scanf(" %d",&resp);
- if(resp==4) acertos++; else strcat(sugestao,"Consultar páginas 21, 22, 23 e 24 do slide \"Aula 16\".\n ");
- break;
- case 3:
- 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");
- printf("\n1 - SDRAM\n2 - SRAM\n3 - RDRAM\n4 - DRAM\n5 - EPRAM\nR: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar página 37 do slide \"Aula 16\".\n ");
- break;
- case 4:
- 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");
- printf("\n1 - SRAM\n2 - RAM\n3 - ROM\n4 - DRAM\n5 - Cache\nR: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar página 32 do slide \"Aula 16\".\n ");
- break;
- case 5:
- printf("\n\nSão exemplos de memórias não voláteis:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 16\".\n ");
- pontuacao=acertos;
- break;
- case 6:
- 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");
- 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: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar página 14 do slide \"Aula 16\".\n ");
- break;
- case 7:
- 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");
- printf("\n1 - Memória flash.\n2 - Memória secundária.\n3 - Memória principal.\n4 - Memória cache.\n5 - Registradores.\nR: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 16, 17 e 18 do slide \"Aula 16\".\n ");
- break;
- case 8:
- printf("\n\nSIMM e DIMM são tipos de módulos de:\n");
- printf("\n1 - Cache\n2 - BIOS.\n3 - Software.\n4 - Memória ROM.\n5 - Memória RAM.\nR: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++; else strcat(sugestao,"Consultar página 43 do slide \"Aula 16\".\n ");
- break;
- case 9:
- 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");
- 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: ");
- scanf(" %d",&resp);
- if(resp==1) acertos++; else strcat(sugestao,"Consultar página 17 do slide \"Aula 16\".\n ");
- break;
- case 10:
- 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");
- printf("\n1 - PROM\n2 - EEPROM\n3 - EPROM\n4 - ROM\n5 - RAM\nR: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 32, 33, 34 e 35 do slide \"Aula 16\".\n ");
- break;
- }
- }
- pontuacao=acertos;
- }
- int barramentos(){
- int resp=0, acertos=0;
- system("cls");
- for(int i=0;i<10;i++){
- switch (ordem[i]){
- case 1:
- printf("\n\nÉ um barramento exclusivo para placas de vídeo:\n");
- printf("\n1 - PCI\n2 - ISA\n3 - AGP\n4 - AMR\n5 - PCI Express\nR: ");
- scanf("%d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar páginas 4, 5 e 6 do slide \"Aula 17\".\n ");
- break;
- case 2:
- 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");
- printf("\n1 - Verdadeira\n2 - Falsa\nR: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 7 e 8 do slide \"Aula 17\".\n ");
- break;
- case 3:
- 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");
- printf("\n1 - AGP\n2 - PCI Express\n3 - PCI\n4 - ISA\n5 - ACR\nR: ");
- scanf(" %d",&resp);
- if(resp==1) acertos++; else strcat(sugestao,"Consultar páginas 5 do slide \"Aula 17\".\n ");
- break;
- case 4:
- printf("\n\nNÃO é uma característica da interface SATA:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==5) acertos++; else strcat(sugestao,"Consultar páginas 12 à 17 do slide \"Aula 17\".\n ");
- break;
- case 5:
- 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");
- printf("\n1 - PCI\n2 - SSD\n3 - USB\n4 - VGA\n5 - HDMI\nR: ");
- scanf(" %d",&resp);
- if(resp==3) acertos++; else strcat(sugestao,"Consultar página 18 do slide \"Aula 17\".\n ");
- pontuacao=acertos;
- break;
- case 6:
- printf("\n\nNÃO é uma característica do USB:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar páginas 18 à 21 slide \"Aula 17\".\n ");
- break;
- case 7:
- printf("\n\nNÃO é característica do barramento PCI Express:\n");
- 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: ");
- scanf(" %d",&resp);
- if(resp==2) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 17\".\n ");
- break;
- case 8:
- 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");
- printf("\n1 - PCI\n2 - AMR\n3 - CNR\n4 - ISA\n5 - AGP\nR: ");
- scanf(" %d",&resp);
- if(resp==4) acertos++; else strcat(sugestao,"Consultar página 3 do slide \"Aula 17\".\n ");
- break;
- case 9:
- 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");
- printf("\n1 - Verdadeira\n2 - Falsa\n\nR: ");
- scanf(" %d",&resp);
- if(resp==1) acertos++; else strcat(sugestao,"Consultar página 7 do slide \"Aula 17\".\n ");
- break;
- case 10:
- printf("\n\nQual o tipo de transmissão é mais eficiente atualmente, serial ou paralela?\n");
- printf("\n1 - Serial\n2 - Paralela\n3 - Mesma eficiência\n4 - Nenhuma das respostas anteriores\nR: ");
- scanf(" %d",&resp);
- if(resp==1) acertos++; else strcat(sugestao,"Consultar página 30 do slide \"Aula 17\".\n ");
- break;
- }
- }
- pontuacao=acertos;
- }
- int main(){
- setlocale(LC_ALL,"Portuguese");
- int resposta=0, pontuacaoAnterior[50], entradas=0;
- char jaVisto[5000]=" ", ultimoVisto[15], recomecar[3];
- pontuacao=0;
- printf("Introdução à informática");
- do{
- if(entradas>0) printf("\nÚltima entrada: %s\nPontuação: %d.\n", ultimoVisto,pontuacaoAnterior[entradas-1]);
- for(int i=0;i<10;i++) ordem[i]=0;
- printf("\n\nSelecione o conteúdo: \n1 - Processador\n2 - Memória\n3 - Barramentos\n4 - Histórico\n5 - Sair\nR:");
- scanf(" %d",&resposta);
- srand(time(NULL));
- if(resposta<4){
- for(int i=0;i<10;i++){
- indice = rand() % 11;
- for(int c=0;c<=10;c++){
- if(ordem[c]==indice){
- indice = rand() % 11;
- c=-1;
- }
- }
- ordem[i]=indice;
- //printf("%d",ordem[i]);
- }
- //system("pause");
- }
- switch (resposta){
- case 1:
- processador();
- strcpy(ultimoVisto,"Processador");
- break;
- case 2:
- memoria();
- strcpy(ultimoVisto,"Memória");
- break;
- case 3:
- barramentos();
- strcpy(ultimoVisto,"Barramento");
- break;
- case 4:
- printf("\nHistórico de entradas:");
- printf("%s\nRespectivas notas: ",jaVisto);
- for(int i=0;i<entradas;i++){
- if(i==0) printf("%d",pontuacaoAnterior[i]); else printf(" - %d",pontuacaoAnterior[i]);
- }
- break;
- case 5:
- strcpy(recomecar,"nao");
- break;
- default: printf("\nEntrada Inválida.\n"); break;
- }
- if(resposta<4){
- if(pontuacao!=10) printf("\nSugestão:\n%s",sugestao);
- strcpy(sugestao,"");
- pontuacaoAnterior[entradas]=pontuacao;
- if(entradas!=0) strcat(jaVisto," - ");
- entradas++;
- strcat(jaVisto,ultimoVisto);
- printf("\nPontuação: %d", pontuacao);
- }
- if(resposta!=5){
- setbuf(stdin,NULL);
- printf("\nVoltar ao menu inicial? ");
- gets(recomecar);
- system("cls");
- }
- }while(stricmp(recomecar,"sim")==0);
- printf("Boa prova!");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment