Você está na página 1de 14

RESUMO

Neste trabalho esto expostas as sugestes de resoluo dos problemas apresentados pela
mestria, sendo utilizado o aprendizado obtido em sala de aula e pesquisas realizadas pelos
alunos. Para a concluso e confirmao da funcionalidade foram utilizados o software VisualG
e Dev C++.

SUMMARY
In this work are exposed suggestions for resolution of the problems presented by the mastery,
and used the knowledge gained in the classroom and research conducted by the students. For
completion and confirmation of functionality we used the software VisualG and Dev C++.

SUMRIO
1- Introduo: 13
2- Relatrio 1 Planejamento Inicial ................................................................. 14
2.1 Esboo do Programa em Portugus Estruturado .................................... 14
3- Relatrio 2 Comando system () .................................................................... 20
4- Relatrio 3 Aplicativo Bsico ...................................................................... 25
4.1 Cdigo Fonte.......................................................................................... 25
4.2 Apresentao de Telas ............................................................................ 31
5- Relatrio 4 Algoritmos Avanados .............................................................. 35
5.1 Fatorial .................................................................................................... 35
5.2 Exponenciao ........................................................................................ 35
5.3 Raiz Quadrada ........................................................................................ 36
6- Relatrio Final - Aplicativo: ............................................................................ 39
6.1 Cdigo Fonte do Aplicativo ................................................................... 39
6.2 Telas do Aplicativo ................................................................................ 46
7- Bibliografia ...................................................................................................... 59
8- Referencias ...................................................................................................... 59

1 - INTRODUO:
No contexto abaixo, sero apresentadas as sugestes para resoluo dos problemas sugeridos
na atividade de ATPS (Atividades Prticas Supervisionadas), da disciplina Programao
Estruturada I.
2 Relatrio 1 Planejamento Inicial
Para a soluo do problema apresentado, sero utilizadas as variveis abaixo, seguindo de um
esboo em portugus estruturado.

Num1 Varivel do tipo inteiro para a realizao de um calculo


Num2 Varivel do tipo inteiro para a realizao de um calculo
Res Varivel do tipo inteiro para exibir o resultado do calculo
Op Varivel do tipo inteiro para a escolha do tipo de calculo
2.1 - Esboo do Programa em Portugus Estruturado:algoritmo "Calculadora"
//Definio de Variveis
var
num1:inteiro
num2:inteiro
res:real
op:inteiro
//Seo de Comandos
inicio
//Construo do Menu Principal
ESCREVAL("CALCULADORA")
ESCREVAL("(1) - Soma")
ESCREVAL("(2) - Subtracao")
ESCREVAL("(3) - Multiplicacao")
ESCREVAL("(4) - Divisao")
ESCREVAL("(5) - Exponenciacao")
ESCREVAL("(6) - Raiz quadrada")
ESCREVAL("(7) - Porcentagem")
ESCREVAL("(8) - Sair")
ESCREVAL("Opcao: ")
LEIA (op)
// Escolha da operao conforme solicitao
escolha op
caso 1
// Operao Adio
ESCREVA("Informe o primeiro numero:")
LEIA(num1)
ESCREVA("Informe o segundo numero:")
LEIA(num2)
res Operao Raiz Quadrada
case 'r':
case 'R':
printf("\n\n\tRAIZ QUADRADA");
printf("\n\n\tValor: ");
scanf("%d", &numero1);
resultado = sqrt(numero1);
printf("\n\tRaiz quadrada de %d = %d", numero1, resultado);
break;

// Opo "P" -> Operao Potenciao


case 'p':
case 'P':
printf("\n\n\tPORCENTAGEM");
printf("\n\n\tValor: ");
scanf("%d", &numero1);
printf("\tPorcentagem: ");
scanf("%d", &numero2);
resultado = (numero1 * numero2) / 100;
printf("\n\t%d %% de %d = %d", numero2, numero1, resultado);
break;
// Opo "S" -> Encerrar o Processamento
case 's':
case 'S':
printf("\n\n\tPrograma finalizado");
break;
// Opo solicitada no prevista - invlida
default:
printf("\n\n\tOpcao Invalida");
}
printf("\n\n\t");system("PAUSE");
system("cls || clear");
}while(oper != 'S' && oper != 's');
return 0;
}
4.2 Apresentao das telas:
Menu Principal:

Opo * (Multiplicao):

Opo E (Exponenciao):

5 - Relatrio 4 Algoritmos Avanados


Descrio tcnica utilizada para desenvolvimento das operaes de Fatorial, Exponenciao, e
Raiz Quadrada.
5.1 Fatorial:
Variveis: numero, i, fat do tipo inteiro.
Descrio: Foi criada uma funo (fatorial) que recebe o valor a ser calculado atravs da
varivel numero. A varivel fat e inicializada com valor 1 e atravs de um lao utilizando a
funo for( ), o contador ( i ) inicializado com o valor a ser calculado, e sofrer decremente
em 1 a cada interao. Na primeira interao, a varivel fat, acumula seu valor atual, que 1
multiplicado pelo valor da varivel i. Nas demais interaes, a varivel fat acumula o produto
do seu valor atual com o valor da varivel i decrementado, at que a varivel i seja igual a 1.
Aps completar todas as interaes, a funo fatorial retorna a varivel fat a funo principal e
atravs da funo printf( ), retornado o resultado ao usurio.
5.2 Exponenciao:

Foi criada uma funo chamada potencia para calcular a potencia de um numero inteiro
positivo. solicitado ao usurio que informe a base e o expoente, que so incrementados nas
variveis base e expoente respectivamente. Se o expoente for igual a 0 ento ser
incrementado o valor 1 na varivel resultado, pois todo nmero inteiro positivo elevado a 0
resulta em 1. Se o expoente for diferente de 0, a funo potencia ser chamada, e sero
passados os valores atravs das variveis base e expoente, para que ela possa efetuar o
calculo.
Na funo potencia a varivel resultado e inicializada com valor 1 que o elemento neutro da
multiplicao. Foi criado um lao com a funo do/while( ), que far o acumulo na varivel
resultado, o produto da multiplicao dasvariveis resultado e base.
Esta funo retorna o valor da exponenciao para a funo principal, atravs da varivel
resultado.

5.3 Raiz Quadrada:

Variaveis: valorRaiz, resultado_1, resultado_2, resultado_3, subtrai_1, subtrai_2, subtrai_3,


passo_1, passo_2, passo_3, raiz do tipo float.
Descrio: foi criada uma funo (raiz_quadrada), que recebe o valor a ser calculado atravs da
varivel valorRaiz que incrementa a varivel resultado_1.

Para calculo da parte inteira da Raiz Quadrada so seguidos os seguintes passos:


- So inicializadas as variveis; subtrai_1 incrementada do valor 1, e passo_1, passo_2, passo_3
com o valor 0.
- Foi criado um lao com a funo while, que incremente a varivel resultado_1 com a
diferena de seu valor atual com a varivel subtrai_1 incrementada do valor 2.
- E incrementada a varivel passo_1 com o valor 1 a cada interao que for feita.
- Este lao executado enquanto a varivel resultado_1 seja maior ou igual a varivel
subtrai_1
Para calculo da primeira casa decimal da Raiz Quadrada so seguidos os seguintes passos:
- Verificado se resultado_1 igual a 0, caso seja o resultado da Raiz Quadrada exato, e o lao
terminado.
- Se resultado1 no for igual a 0, incrementada a varivel resultado_2 com o produto entre
resultado_1 por 100, incrementada a varivel subtra_2 com o produto entre passo_1 por 20
acrescido de 1 e incrementada a varivel passo_2 com o valor 0.
- Foi criado um lao com a funo while, que incremente a varivel resultado_2 com a
diferena de seu valor atual com a varivel subtrai_2 incrementada do valor 2.
- E incrementada a varivel passo_2 com o valor 1 a cada interao que for feita.
- Este lao executado enquanto a varivel resultado_2 seja maior ou igual a varivel
subtrai_2
Para calculo da segunda casa decimal da Raiz Quadrada so seguidos os seguintes passos:
- Verificado se resultado_2 igual a 0, caso seja, o resultado da Raiz Quadrada exato, e olao
terminado.
- Se resultado2 no for igual a 0, incrementada a varivel resultado_3 com o produto entre
resultado_2 por 100, incrementada a varivel subtra_3 com o produto entre passo_1
multiplicado por 10, acrescido da varivel passo_2 multiplio por 20 acrescido de 1 e
incrementada a varivel passo_3 com o valor 0.
- Foi criado um lao com a funo while, que incremente a varivel resultado_3 com a
diferena de seu valor atual com a varivel subtrai_3 incrementada do valor 2.
- E incrementada a varivel passo_3 com o valor 1 a cada interao que for feita.
- Este lao executado enquanto a varivel resultado_3 seja maior ou igual a varivel
subtrai_3
Ao final dos laos a varivel raiz incrementada com o resultado da operao, onde a vaivel
passo_1 multiplicada por 100, acrescida do resultado da multiplicao da varivel passo_2
por 10 e acrescida da varivel passo_3 , dividida por 100.
A funo retornar o valor para a funo principal atravs da varivel raiz.

6 Relatrio Final Aplicativo


Foi desenvolvida a atividade utilizando o software VisualG para elaborao e teste do
algoritmo em portugus estruturado (Portugol) e o software DEV-C++ para elaborao e testes

do algoritmo em linguagem de programao C.


Nos prximos itens est descrito o cdigo fonte gerado atravs dos estudos propostos na
Atividade Pratica Supervisionada, e as telas criadas por este aplicativo.
6.1 Cdigo Fonte do Aplicativo:
#include
#include
#include
#include
// Funco que calcula o fatorial de um nmero
int fatorial(int numero)
{
int fat = 1;
int i;
for(i = numero; i > 1; i--){
fat *= i;
}
return fat;
}
// Funco que converte binrio para decimal
int binario_decimal(int binario)
{
int decimal=0, i=0, resto;
while (binario!=0)
{
resto = binario % 10;
binario /= 10;
decimal += resto * pow(2,i);
++i;
}
return decimal;
}
// Funcoque converte decimal para binrio
int decimal_binario(int decimal)
{
int resto, i=1, binario=0;
while (decimal != 0)
{
resto = decimal % 2;
decimal /= 2;
binario += resto * i;
i *= 10;
}

return binario;
}
//Funo que calcula a Raiz Quadrada com 2 poioes decimais
// utilizando o processo de subtrao dos impares.
float raiz_quadrada(float valorRaiz)
{
float resultado_1,subtrai_1,passo_1;
float resultado_2,subtrai_2,passo_2;
float resultado_3,subtrai_3,passo_3;
float raiz;

subtrai_1 = 1;
passo_1 = 0;
passo_2 = 0;
passo_3 = 0;
resultado_1 = valorRaiz;

while (resultado_1 >= subtrai_1){


resultado_1 = resultado_1 - subtrai_1;
subtrai_1 = subtrai_1 + 2;
passo_1 = passo_1 + 1;
}
if (resultado_1 != 0)
{
resultado_2 = resultado_1 * 100;
subtrai_2 = (passo_1 * 20) + 1;
passo_2 = 0;
while (resultado_2 >= subtrai_2){
resultado_2 = resultado_2 - subtrai_2;
subtrai_2 = subtrai_2 + 2;
passo_2 = passo_2 + 1;
}
if (resultado_2 != 0){
resultado_3 = resultado_2 * 100;
subtrai_3 = (((passo_1*10) + passo_2) * 20) + 1;
passo_3 = 0;
while (resultado_3 >= subtrai_3){
resultado_3 = resultado_3 - subtrai_3;
subtrai_3 = subtrai_3 + 2;
passo_3 = passo_3 + 1;

}
}
}
else
{
passo_2 = 0;
passo_3 = 0;
}
raiz = ((passo_1 * 100) + (passo_2 * 10) + passo_3) / 100;
return raiz;
}
//Funo para calculo da Exponenciao
int potencia (int base,int expoente){
int resultado = 1;
do {
resultado *= base;
expoente--;
}while (expoente > 0);
return resultado;
}
//Funo Principal
int main(int argc, char *argv[])
{
int numero1, numero2, resultado, fat;
int base, expoente;
int binario[8];
float numeroPorcentagem,resultadoPorcentagem;float valorRaiz,resultadoRaiz;
char oper;
do
{
// Alterao do Ttulo na caixa
system("title Administrador: CALCULARODA V1.0");
// Alteao das cores
system("color 84");
// Construo do Menu Principal
printf("\t\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD");
printf("\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n");
printf("\t\t\t\xBA C A L C U L A D O R A \xBA\n");
printf("\t\t\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD");
printf("\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n");
printf("\n\n");

printf("\t(+) - Soma\t\t\t(P) - Porcentagem\n");


printf("\t(-) - Subtracao\t\t\t(F) - Fatorial\n");
printf("\t(*) - Multiplicacao\t\t(B) - Conversao Binario -> Decimal\n");
printf("\t(/) - Divisao\t\t\t(D) - Conversao Decimal -> Binario\n");
printf("\t(E) - Exponenciacao\t\t(S) - Sair\n");
printf("\t(R) - Raiz quadrada\n");
printf("\tOpcao: ");
oper = getche();
// Opes
switch( oper )
{
// Operao Ado
case '+':
printf("\n\n\tSOMA");
printf("\n\n\tPrimeiro valor: ");
scanf("%d", &numero1);
printf("\tSegundo valor: ");
scanf("%d", &numero2);
resultado = numero1 + numero2;
printf("\n\t%d + %d = %d", numero1, numero2, resultado);
break;
// Operao Subtrao
case '-':
printf("\n\n\tSUBTRACAO");
printf("\n\n\tPrimeiro valor: ");
scanf("%d", &numero1);
printf("\tSegundo valor: ");scanf("%d", &numero2);
resultado = numero1 - numero2;
printf("\n\t%d - %d = %d", numero1, numero2, resultado);
break;
// Operao Multiplicao
case '*':
printf("\n\n\tMULTIPLICACAO");
printf("\n\n\tPrimeiro valor: ");
scanf("%d", &numero1);
printf("\tSegundo valor: ");
scanf("%d", &numero2);
resultado = numero1 * numero2;
printf("\n\t%d * %d = %d", numero1, numero2, resultado);
break;
// Operao Diviso

case '/':
printf("\n\n\tDIVISAO");
printf("\n\tPrimeiro valor: ");
scanf("%d", &numero1);
printf("\tSegundo valor: ");
scanf("%d", &numero2);
if(numero2 == 0)
{
printf("\tErro divisao por zero");
break;
}
resultado = numero1 / numero2;
printf("\n\t%d / %d = %d", numero1, numero2, resultado);
break;
// Operao Exponenciao
case 'e':
case 'E':
printf("\n\n\tEXPONENCIACAO");
printf("\n\n\tBase: ");
scanf("%d", &base);
printf("\tExpoente: ");
scanf("%d", &expoente);
if (expoente == 0){
resultado = 1;
}
else{
resultado = potencia(base,expoente);
}
printf("\n\t%d elevado a %d = %d", base, expoente, resultado);break;
// Operao Raiz Quadrada
case 'r':
case 'R':
printf("\n\n\tRAIZ QUADRADA");
printf("\n\n\tValor: ");
scanf("%f", &valorRaiz);
resultadoRaiz = raiz_quadrada(valorRaiz);
printf("\n\tRaiz quadrada de %.2f = %.2f", valorRaiz, resultadoRaiz);
break;
// Operao Porcentagem
case 'p':
case 'P':
printf("\n\n\tPORCENTAGEM");

printf("\n\n\tValor: ");
scanf("%d", &numero1);
printf("\tPorcentagem: ");
scanf("%d", &numero2);
resultado = (numero1 * numero2) / 100;
printf("\n\t%d %% de %d = %d", numero2, numero1, resultado);
break;
// Operao Fatorial
case 'f':
case 'F':
printf("\n\n\tFATORIAL");
printf("\n\n\tValor: ");
scanf("%d", &numero1);
resultado = fatorial(numero1);
printf("\n\tO fatorial de %d = %d", numero1, resultado);
break;
// Converso Binrio em Decimal
case 'b':
case 'B':
printf("\n\n\tBINARIO PARA DECIMAL");
printf("\n\n\tDigite o numero binario(8 bits): ");
scanf("%d", &numero1);
resultado = binario_decimal(numero1);
printf("\n\tEquivalente em Decimal: %d", resultado);
break;
// Converso Decimal em Binrio
case 'd':
case 'D':
printf("\n\n\tDECIMAL PARA BINARIO");printf("\n\n\tDigite o numero em decimal(256): ");
scanf("%d", &numero1);
resultado = decimal_binario(numero1);
printf("\n\tEquivalente em Binario: %d", resultado);
break;
// Saida do Sistema
case 's':
case 'S':
printf("\n\n\tPrograma finalizado");
break;

// Opes no previstas
default:
printf("\n\n\tOpcao Invalida");
}
printf("\n\n\t");
system("PAUSE");
system("cls || clear");
}while(oper != 'S' && oper != 's');
return 0;
}

6.2 Telas do Aplicativo:


Menu Principal

Opo + Operao Adio

Opo - Operao Subtrao

Opo * Operao Multiplicao

Opo / Operao Diviso

Opo E Clculo Exponenciao

Opo R Clculo da Raiz Quadrada

Opo P Clculo de Porcentagem

Opo F Clculo de Fatorial

Opo B Converso de Binrio para Decimal

Opo D Converso de Decimal para Binrio

Opo S Sair do Sistema

Mensagem de Erro

7 - Bibliografia:
Livro: Treinamento em Linguagem C
Autor: Victorine Viviane Mizrahi
Editora: Person Patrice Hall
Livro: Fundamentos da Programao de Computadores: algoritmos, pascal e C/C++
Autores: Ana Fernanda Gomes Ascencio
Edilene Aparecida Veneruchi de Campos
Editora: Person Patrice Hall
8 - Referencias:
Utilizao do comando SYSTEM( )
https://docs.google.com/file/d/0B114oKTDsLjnQWQwYnhtWjFTLTA/edit?pli=1
Resoluo da Raiz Quadrada, disponvel:

http://pt.wikipedia.org/wiki/Raiz_quadrada
Resoluo da Exponenciao, disponvel:
http://www.assimsefaz.com.br/sabercomo/como-calcular-exponenci

Você também pode gostar