p2REPTP2003 2

Propaganda
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!
Download