Universidade Federal de Campina Grande Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Profs.: Joseana Macêdo Fechine José Eustáquio Rangel de Queiroz DSC/CCT/UFCG Matrícula REPOSIÇÃO - MÓDULO II Turma 02 DATA: 27/04/2004 Nome Nota Obs.: Esta avaliação consta de duas partes: Parte I (teórica, peso 5) e Parte II (prática, peso 5). O aluno terá metade do tempo de duração da avaliação para executar a Parte I e a outra metade para a Parte II. Parte I (Teórica) 1. Para os trechos de programa abaixo, indique, ao lado de cada chamada à função printf, o que será impresso. 3,5 a) main() { teste(); teste(); teste(); teste(); } teste() { static int i=0, j=0; printf("i = %d, i = %d, i+j %d \n",i++, j++,i+j); } b) int numero1, numero2; main() { extern numero1, numero2; printf("Digite o numero 1: "); scanf("%d", &numero1); printf("Digite o numero 2: "); scanf("%d", &numero2); for(i=0;i<2;i++){ maior(); numero1=numero1*3; numero2++; } } maior() { if(numero1 > numero2) printf("numero1 > numero2); else printf("numero1 <= numero2\n"); } 4. Informe detalhadamente o que representa cada bloco em destaque (círculo) no trecho de código a seguir. #include <graphics.h> #include <stdlib.h> #include <string.h> include <stdio.h> 2,5 #include <conio.h> int main(void) { int gdriver = DETECT, gmodo, coderro; int i; } coderro=registerbgidriver(EGAVGA_driver); initgraph(&gdriver, &gmodo, ""); coderro=graphresult(); if(coderro != grOk){ printf("Erro de funcao grafica: %s\n", grapherrormsg(coderro)); printf("Pressione uma tecla para parar!"); getch(); exit(1); # Nome da Cor 0 Black 1 Blue 2 Green 3 Cyan 4 Red 5 Magenta 6 Brown 7 Light Gray 8 Dark Gray 9 Light Blue 10 Light Green setbkcolor(BLACK); setcolor(WHITE); for(i=1;i<=15;i++){ setcolor(i); line(5,5,20*i,20*i); delay(1000); cleardevice(); } for(i=1;i<=15;i++){ setcolor(i); rectangle(5,5,15*i,15*i); delay(1000); cleardevice(); } for(i=1;i<=15;i++){ setcolor(i); setfillstyle(SOLID_FILL, 16-i); bar3d(200,200,400,400,50,50); outtextxy(280,300, "3D"); delay(1000); cleardevice(); } closegraph(); return; } 11 Light Cyan 12 Light Red 13 Light Magenta 14 Yellow 15 White Cor Universidade Federal de Campina Grande Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Profs.: Joseana Macêdo Fechine José Eustáquio Rangel de Queiroz DSC/CCT/UFCG Matrícula REPOSIÇÃO - MÓDULO II Turma 02 DATA: 27/04/2004 Nome Nota Parte II (Prática) Obs.: Os programas elaborados deverão ser armazenados em um disquete e entregues ao final da prova. 1. Atualmente, muitas são as aplicações que envolvem o acesso remoto à informação (por exemplo: monitoramento de equipamentos e acionamento de dispositivos em lugares distantes). Este acesso é, normalmente, realizado através do uso de uma senha. Além disso, é comum utilizar técnicas de codificação, visando tornar mais segura a transmissão da informação (senha). Portanto, é conveniente para este tipo de aplicação, a solução de dois problemas: evitar que usuários não autorizados acessem o sistema e evitar que esta senha possa ser “capturada” durante a transmissão. Diante do exposto, desenvolva um programa em linguagem C que recebe a senha do usuário (X), composta de 4 dígitos (X=x1x2x3 x4), sendo x4 o dígito de controle, testado de acordo com a expressão: 3 [(1 K) * x x 4t = 8 - { K ]}/10 K =1 Se o valor de x4t , obtido a partir da expressão acima, não corresponder ao valor digitado pelo usuário o sistema deverá informar que a senha é inválida e encerrar o programa (Por exemplo, para x=3692, a senha será considerada válida). Caso contrário, deverá ser informado ao usuário que a senha é válida e, em seguida, esta senha deverá ser codificada para que, posteriormente, possa ser enviada de forma a possibilitar o acesso remoto. A codificação deverá ser feita da seguinte forma: o programa converterá o X de 4 dígitos na forma x1x2x3 x4 em um número Y = y1y2y3y4, correspondente a X codificado (e.g. para x = 3692, y = 1234), usando a seguinte regra: y1 = ((x3 + 1) / x4 + x1)) y2 = ((x1 + 2) /(10 – x2)) y3 = ((x2 + 3) / x1) y4 = ((x2 + x1) / x4) Obs.: O programa deverá ler X, verificar se X é válido ou não (fornecendo a mensagem ao usuário) e imprimir Y (um número inteiro). Para este programa devem ser implementadas 4 soluções, conforme descrição a seguir: 1. Funções no mesmo arquivo do programa principal, antes do mesmo; 2. Funções no mesmo arquivo do programa principal, após o mesmo; 3. Funções em arquivo separado, chamadas diretamente do programa principal; 4. Funções em arquivo separado, usando projeto da seguinte forma: O arquivo princ.c, que conterá o programa principal; O arquivo func.c, que conterá as funções; O arquivo func.h, que conterá os protótipos das funções. 6,0 2. Elabore um programa em C que calcula a corrente elétrica que atravessa um medidor residencial, de acordo com a figura abaixo. Neste programa, o usuário deverá informar o número de equipamentos ligados (o número máximo de equipamentos ligados não deverá exceder o valor 5 e a tensão da rede é fixa, sendo igual a 220 V). Os valores da potência nominal de cada um destes aparelhos já estão armazenados em um arquivo denominado potencia.dat, a fim de que seja calculada a corrente elétrica que atravessa o medidor. O valor obtido para a corrente que circula o medidor deverá ser impresso na tela, bem como armazenado em um arquivo denominado corrente.dat. 4,0 220 V Equipamento 5 Equipamento 1 Equipamento 2 Equipamento 4 Equipamento 3 Obs.: Os dados devem ser armazenados no fomato texto. SUCESSO!