Anda di halaman 1dari 22

FACULDADE ANHANGUERA DE RIO CLARO

FACULDADE ANHANGUERA DE RIO CLARO


ATIVIDADE PRTICA SUPERVISIONADA PROGRAMAO ESTRUTURADA I

ADRIANO PEREIRA DA SILVA - R.A.: 9902012872


CHRISTOFERSON HOHNE - R.A.: 8601246903
MARCOS ROBERTO BAUNGARTNER - R.A.: 9902012531
THIAGO RODRIGO SASS - R.A.: 8412151485
TIAGO MARTINS DOS SANTOS - R.A.: 8497219877
ANDERSON BRUNO DA SILVA R.A.: 8207879058

RIO CLARO SP
06/06/2015

Etapa 1
1. Relatrio 1 Planejamento inicial
1.1 - Esboo do programa
Item 1: Menu principal.
Varivel: op do tipo caractere.
Aes:
1. Apresentar na tela as opes do aplicativo bsico. (Soma, Subtrao,
Multiplicao, Diviso, Exponenciao, Raiz Quadrada, Porcentagem e Sair).
2. Receber a opo e armazenar (op).

Item 2: Operao de soma.


Variveis: val1, val2 e res do tipo inteiro.
Aes:
1. Solicitar e armazenar o primeiro valor (val1).
2. Solicitar e armazenar o segundo valor (val2).
3. Realizar o clculo e armazenar o resultado (res).
4. Apresentar o resultado na tela (res).

Item 3: Operao de subtrao.


Variveis: val1, val2 e res do tipo inteiro.
Aes:

1. Solicitar e armazenar o primeiro valor (val1).


2. Solicitar e armazenar o segundo valor (val2).
3. Realizar o clculo e armazenar o resultado (res).
4. Apresentar o resultado na tela (res).

Item 4: Operao de multiplicao.


Variveis: val1, val2 e res do tipo inteiro.
Aes:
1. Solicitar e armazenar o primeiro valor (val1).
2. Solicitar e armazenar o segundo valor (val2).
3. Realizar o clculo e armazenar o resultado (res).
4. Apresentar o resultado na tela (res).

Item 5: Exponenciao.
Variveis: val1, val2 do tipo inteiro e resDouble do tipo double.
Aes:
1. Solicitar e armazenar o primeiro valor (val1).
2. Solicitar e armazenar o segundo valor (val2).
3. Realizar o clculo e armazenar o resultado (resDouble).
4. Apresentar o resultado na tela (resDouble).

Item 6: Raiz quadrada.


Variveis: val1 do tipo inteiro e resFloat do tipo float.
Aes:
1. Solicitar e armazenar o primeiro valor (val1).
2. Realizar o clculo da Raiz quadrada e armazenar o resultado
(resFloat).
3. Apresentar o resultado na tela (resFloat).
Item 5: Porcentagem.
Variveis: val1, val2 do tipo inteiro e resFloat do tipo float.
Aes:
1. Solicitar e armazenar o primeiro valor (val1).
2. Solicitar e armazenar o segundo valor (val2).
3. Realizar o clculo e armazenar o resultado (resFloat).
4. Apresentar o resultado na tela (resFloat).

Item 6: Sair.
Aes:
Apenas executa a sada do Programa.

2. Relatrio 2 - Comando sistem( )


Analizando sobre a funo sistem, encontramos 4 funcionalidades interessantes
que poderiam ser implementadas no programa:
- system "cls" - Limpa a tela
- system tittle - muda o texto da janela do aplicativo
- system color - muda a cor do texto do aplicativo
- system pause - pausa o programa at que se pressione uma tecla

Etapa 2
3. Relatrio 3 Aplicativo Bsico
3.1 - Cdigo Fonte do aplicativo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <math.h>

int main() {
// Declarao das variveis necessrias para a execuo do Aplicativo
char op;
int val1, val2, res;
float resFloat;
double resDouble;

// Responsvel por montar o Quadrado na parte Superior da tela do


aplicativo
printf("\t\t\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\x
CD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n");
printf("\t\t\xBA
printf("\t\t\xBA

\xBA\n");
C A L C U L A D O R A \xBA\n");

printf("\t\t\xBA

\xBA\n");

printf("\t\t\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\x
CD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n");
// Apresentao do Menu de Operaes
printf("\n\n\t\t(+) - Soma");
printf("\n\t\t(-) - Subtracao");
printf("\n\t\t(*) - Multiplicacao");
printf("\n\t\t(/) - Divisao");
printf("\n\t\t(E) - Exponenciacao");
printf("\n\t\t(R) - Raiz quadrada");
printf("\n\t\t(P) - Porcentagem");
printf("\n\t\t(S) - Sair");
printf("\n\t\tOpcao:");
// Armazena a tecla digitada pelo Usurio
op = getch();
// Exibe na tela a Tecla digitada pelo Usurio
printf("%c", op);
// Tranforma a tecla digitada para caracter maisculo para comparao
op = toupper(op);
// Realiza o teste para saber qual tecla (opo) foi escolhida

switch (op) {

/* Operao soma disparada, pelo processamento do caracter '+'.


Recebe os valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/
case '+':

system("cls");

// Limpa a tela
system("title ** Operao Soma **");
// Altera o titulo da Janela do Aplicativo
system("color 05");
// Altera a cor do texto do aplicativo
printf("\n\n\n\t\tSOMA");
// Mostra na tela o texo "SOMA"
printf("\n\n\t\tPrimeiro Valor: ");
scanf("%d", &val1);
// Armazena o texto digitado pelo Usurio
printf("\n\t\tSegundo Valor: ");
scanf("%d", &val2);
res = val1 + val2;
// Realiza a soma dos valores
printf("\n\n\t\t%d + %d = %d \n\n", val1, val2, res);
break;
/* Operao Subtrao, disparada pela processamento do caracter '-'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case '-':

system("cls");

system("title ** Operao Subtrao **");


system("color 06");
printf("\n\n\n\t\tSUBTRACAO");
printf("\n\n\t\tPrimeiro Valor: ");
scanf("%d", &val1);

printf("\n\t\tSegundo Valor: ");


scanf("%d", &val2);
res = val1 - val2;
printf("\n\n\t\t%d - %d = %d \n\n", val1, val2, res);
break;
/* Operao Multiplicao, disparada pela processamento do caracter '*'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case '*':

system("cls");
system("title ** Operao Multiplicao **");
system("color 08");

printf("\n\n\n\t\tMULTIPILCACAO");
printf("\n\n\t\tPrimeiro Valor: ");
scanf("%d", &val1);
printf("\n\n\t\tSegundo Valor: ");
scanf("%d", &val2);
res = val1 * val2;
printf("\n\n\t\t%d * %d = %d \n\n", val1, val2, res);
break;
/* Operao Diviso, disparada pela processamento do caracter '/'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case '/':

system("cls");
system("title ** Operao Diviso **");
system("color 09");

printf("\n\n\n\t\tDIVISAO");
printf("\n\n\t\tPrimeiro Valor: ");
scanf("%d", &val1);
printf("\n\t\tSegundo Valor: ");
scanf("%d", &val2);

resFloat = (val1 / val2);


if(val2 == 0){
printf("\n\t\tErro divisao por Zero\n\n: ");
} else {
printf("\n\n\t\t%d dividido por %d = %1.0f \n\n", val1, val2, resFloat);
}
break;
/* Operao E,xponenciao disparada pela processamento do caracter 'E'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case 'E':

system("cls");
system("title ** Operao Exponenciao **");
system("color 01");

printf("\n\n\n\t\tEXPONENCIACAO");
printf("\n\n\t\tBase: ");
scanf("%d", &val1);
printf("\n\n\t\tExpoente: ");
scanf("%d", &val2);
resDouble = (pow(val1, val2));
printf("\n\n\t\t%d elevado a %d = %g \n\n", val1, val2, resDouble);
break;
/* Opero Raiz Quadrada, disparada pela processamento do caracter 'R'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
case 'R':

system("cls");

system("title ** Operao Raiz Quadrada **");


printf("\n\n\n\t\tRAIZ QUADRADA");
printf("\n\n\t\tValor: ");
scanf("%d", &val1);

resFloat = sqrt(val1);
printf("\n\t\tRaiz Quadrada de %d = %1.0f \n\n", val1, resFloat);
break;
/* Opero Porcentagem, disparada pela processamento do caracter 'P'.
Recebe os valores do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case 'P':

system("cls");
system("title ** Operao Porcentagem **");
system("color 06");

printf("\n\n\n\t\tPORCENTAGEM");
printf("\n\n\t\tValor: ");
scanf("%d", &val1);
printf("\n\t\tPorcentagem: ");
scanf("%d", &val2);
resFloat = (val1 * val2 / 100);
printf("\n\n\t\t%d %% de %d = %1.0f \n\n", val2, val1, resFloat);
break;
/* Opero que realiza a sada do programa, disparada pela processamento do
caracter 'S'
*/
case 'S':

system("cls");

printf("\n\n\t\tPrograma Finalizado\n\n");
break;
/* Operao invlida, disparada quando nenhuma das opes acima so digitadas */
default:

system("cls");

printf("\n\n\t\tOpcao Invalida\n\n");
break;
}
// Espera por um comando a ser digitado para finaliazar o programa
system("pause");

Etapa 3
Relatrio 4 Algortimos Avanados
Item: fatorial.
Varivel: val1, i, res, do tipo inteiro.
Descrio: A varivel i inicializada como valor 1 e recebe-se do usurio o
valor a ser calculado (val1). Um lao for(), com decremento de 1, inicializa o seu
contador (i) com o valor a ser calculado, que ser decrementado a cada iterao. Na
primeira iterao a varivel val1 acumula seu valor atual, que 1 multiplicado pela
valor da varivel i. Nas demais iteraes, val1 acumula o produto do seu valor atual
com o valor de i decrementado, at que i seja igual a 1.

Item: Exponenciao
Varivel: val1, val2, i, do tipo inteiro
resDouble, do tipo double
Descrio: a varivel val1 recebe do usurio o valor da base, enquanto val2
recebe o valor do expoente. Inicia-se o lao for(), com a varivel i recebendo o valor 1,
e repetindo, recebendo o acrssimo de 1 a cada volta (i++) enquanto i seja menor ou
igual varivel val2. Dentro deste lao, resDouble recebe seu valor atual multiplicado
por val1. No fim do lao, o resultado estar armazenado em resDouble.

Item: Raiz Quadrada


Varivel: i, val1, do tipo inteiro
resFloat, tempResFloat, do tipo float

Descrio: val1 recebe o valor do nmero a ser encontrada sua raiz quadrada.
resFloat, recebe val1. Inicia-se um lao aparentemente em looping infinito onde
resFloat recebera o resultado da seguinte expresso: (resFloat/2) + (val1/
(2*resFloat)).
Dentro deste lao, uma condio if() far o papel de finaliza-lo com o comando
break, nesta etapa entra a varivel tempResFloat que receber o valor que determina o
fim do lao. Este valor ser quando a resFloat for igual a tempResFloat, ou seja, imita
o padro resposta de uma raiz, onde um nmero vezes ele mesmo seria igual ao
nmero do qual estamos encontrando a raiz quadrada.

Etapa 4
Relatrio 5 Aplicativo Final
5.1 Cdigo fonte do aplicativo
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>

int main() {
// Declarao das variaveis necessrias para a execuo do Aplicativo
char op;
int dec=0, d=1;
int val1, val2, res;
float resFloat, tempResFloat = 0;
double resDouble;
char binario[8];

system("color 1e");
system ("title Calculadora v1.0");
do {
// Responsvel por montar o Quadrado na parte Superior da tela do aplicativo
printf("\t\t\xC9");
for(int i = 1; i < 40; i++) {
printf("\xCD");
}
printf("\xBB\n");
printf("\t\t\xBA
printf("\t\t\xBA

\t\xBA\n");
CALCULADORA

printf("\t\t\xBA

\t\xBA\n");

printf("\t\t\xC8");
for(int i = 1; i < 40; i++) {
printf("\xCD");
}
printf("\xBC\n");
// Apresentao do Menu de Operaes
printf("\n\t(+) - Soma");
printf("\t\t\t(P) - Porcentagem");
printf("\n\t(-) - Subtracao");
printf("\t\t\t(F) - Fatorial");
printf("\n\t(*) - Multiplicacao");
printf("\t\t(B) - Conversor Binario > Decimal");
printf("\n\t(/) - Divisao");
printf("\t\t\t(D) - Conversor Decimal > Binario");
printf("\n\t(E) - Exponenciacao");
printf("\t\t(S) - Sair");
printf("\n\t(R) - Raiz quadrada");

\t\xBA\n");

printf("\n\n\tOpcao:");
// Armazena a tecla digitada pelo Usurio
op = getch();
// Exibe na tela a Tecla digitada pelo Usurio
printf("%c", op);
// Tranforma a tecla digitada para caracter maisculo para comparao
op = toupper(op);
// Realiza o teste para saber qual tecla (opo) foi escolhida
switch (op) {
/* Opero soma disparada, pela processamento do caracter '+'. Recebe os valores do
Usurio, realiza o calculo e apresenta o resultado na tela
*/
case '+':

system("title ** Operao Soma **");

// Altera o titulo da Janela do Aplicativo


printf("\n\n\n\tSOMA");
// Mostra na tela o texo "SOMA"
printf("\n\n\tPrimeiro Valor: ");
scanf("%d", &val1);
// Armazena o texto digitado pelo Usurio
printf("\n\tSegundo Valor: ");
scanf("%d", &val2);
res = val1 + val2;
// Realiza a soma dos valores
printf("\n\n\t%d + %d = %d \n\n", val1, val2, res);
break;
/* Opero Fatorial, disparada pela processamento do caracter 'F'.
Recebe os valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/

case 'F':

system("title ** Operao Fatorial **");


printf("\n\n\n\tFATORIAL");
printf("\n\n\tValor: ");
scanf("%d", &val1);
res = 1;
for(int i = val1; i > 1; i--) {
res = res * i;
}
printf("\n\n\tFatorial de %d = %d \n\n", val1, res);
break;

/* Opero Subtrao, disparada pela processamento do caracter '-'. Recebe os valores


do Usurio, realiza o calculo
e apresenta o resultado na tela
*/
case '-':

system("title ** Operao Subtrao **");


printf("\n\n\n\tSUBTRACAO");
printf("\n\n\tPrimeiro Valor: ");
scanf("%d", &val1);
printf("\n\tSegundo Valor: ");
scanf("%d", &val2);
res = val1 - val2;
printf("\n\n\t%d - %d = %d \n\n", val1, val2, res);
break;

/* Opero Multiplicao, disparada pela processamento do caracter '*'. Recebe os


valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/
case '*':

system("title ** Operao Multiplicao **");


printf("\n\n\n\tMULTIPILCACAO");
printf("\n\n\tPrimeiro Valor: ");
scanf("%d", &val1);

printf("\n\n\tSegundo Valor: ");


scanf("%d", &val2);
res = val1 * val2;
printf("\n\n\t%d * %d = %d \n\n", val1, val2, res);
break;
/* Opero Divso, disparada pela processamento do caracter '/'. Recebe os valores do
Usurio, realiza o calculo e apresenta o resultado na tela */
case '/':

system("title ** Operao Diviso **");


printf("\n\n\n\tDIVISAO");
printf("\n\n\tPrimeiro Valor: ");
scanf("%d", &val1);
printf("\n\tSegundo Valor: ");
scanf("%d", &val2);
if(val2 == 0){
printf("\n\tErro, divisao por Zero!\n\n ");
} else {
resFloat = (val1 / val2);
printf("\n\n\t%d dividido por %d = %0.2f \n\n", val1, val2,

resFloat);
}
break;
/* Opero E,xponenciao disparada pela processamento do caracter 'E'.
Recebe os valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/
case 'E':

system("title ** Operao Exponenciao **");


printf("\n\n\n\tEXPONENCIACAO");
printf("\n\n\tBase: ");
scanf("%d", &val1);

printf("\n\n\tExpoente: ");
scanf("%d", &val2);
resDouble = 1;
for(int i = 1; i <= val2; i++) {
resDouble = resDouble * val1;
}
printf("\n\n\t%d elevado a %d = %g \n\n", val1, val2, resDouble);
break;
/* Opero Raiz Quadrada, disparada pela processamento do caracter 'R'.
Recebe os valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/
case 'R':

system("title ** Operao Raiz Quadrada **");


printf("\n\n\n\tRAIZ QUADRADA");
printf("\n\n\tValor: ");
scanf("%d", &val1);
//resFloat = sqrt(val1);
resFloat = val1;
for (int i = 0; i >= 0; ++i) {
resFloat = (resFloat / 2) + (val1 / (2 * resFloat));

if(resFloat == tempResFloat) {
break;
}
tempResFloat = resFloat;
}
printf("\n\tRaiz Quadrada de %d = %1.2f \n\n", val1, resFloat);
break;

/* Opero Porcentagem, disparada pela processamento do caracter 'P'.


Recebe os valores do Usurio, realiza o calculo e apresenta o resultado na tela
*/
case 'P':

system("title ** Operao Porcentagem **");


printf("\n\n\n\tPORCENTAGEM");
printf("\n\n\tValor: ");
scanf("%d", &val1);
printf("\n\tPorcentagem: ");
scanf("%d", &val2);
resFloat = (float) (val1 * val2 * 0.01);

printf("\n\n\t%d %% de %d = %.1f \n\n", val2, val1, resFloat);


break;
/* Operao Decimal para Binario, disparada pela processamento do caracter 'D'.
Recebe os valores do Usurio, realiza a converso e apresenta o resultado na tela
*/
case 'D':

system("title ** Operao Decimal - Binario **");


printf("\n\n\tDECIMAL PARA BINARIO");
printf("\n\n\tDigite um numero decimal ( <256): ");
scanf("%d",&val1);
itoa(val1,binario,2);
printf("\n\n\tEquivalente em binario eh: %s", binario);
break;

/* Operao Binario para Decimal, disparada pela processamento do caracter 'B'.


Recebe os valores do Usurio, realiza a converso e apresenta o resultado na tela
*/
case 'B':

system("title ** Operao Binario - Decimal **");


printf("\n\n\tBINARIO PARA DECIMAL");
printf("\n\n\tDigite o numero binario (8 bits): ");
scanf("%d",&val1);

do {
dec = dec+(val1%10)*d;
d = d*2;
val1 = val1/10;
} while(val1!=0);
printf("\n\n\tEquivalente em Decimal: %d", dec);
break;

/* Opero que realiza a sada do programa, disparada pela processamento do


caracter 'S'
*/
case 'S':

system("cls");
printf("\n\n\tPrograma Finalizado\n\n");

break;
/* Operao invlida, disparada quando nenhuma das opes acima so digitadas */
default:

printf("\n\n\tOpcao Invalida\n\n");

break;
}
// Espera por um comando a ser digitado para finaliazar o programa
getch();
system("cls");
} while (op != 'S');
}

5.2 Telas do Aplicativo

fig. 1

fig. 2

fig.3

Bibliografa:

Victorine Viviane. Treinamento em Linguagem C. PLT n 706. 1 ed. So Paulo:


Pearson, 2007.