• Nenhum resultado encontrado

7 Testes e Condições. Unesp Campus de Guaratinguetá

N/A
N/A
Protected

Academic year: 2021

Share "7 Testes e Condições. Unesp Campus de Guaratinguetá"

Copied!
42
0
0

Texto

(1)

Unesp – Campus de Guaratinguetá

Curso de Programação Computadores

Prof. Aníbal Tavares

Profa. Cassilda Ribeiro

Ministrado por: Prof. André Amarante

7 – Testes e Condições

(2)

Testes e Condições 2

Suponha que temos duas variáveis numéricas, A e B,

cujos valores são diferentes, e desejamos imprimir a

maior delas.

7 Seleção de Ações Alternativas

Neste caso utilizamos uma construção chamada

Se_Então_Senão

SIM NÃO

A > B ?

(3)

Em Linguagem Algorítmica a construção

Se_Então_Senão

tem o seguinte formato:

Se “condição”

então “alternativa verdadeira”

senão “alternativa falsa”

Exemplo:

Se A > B

então Escreva ( A )

senão Escreva ( B )

(4)

Testes e Condições 4

Um conjunto especial de operadores relacionais é

solicitado para expressar condições. São eles:

!= <= >= == < > Operador em Linguagem C

não igual ( diferente de )

menor do que ou igual a

maior do que ou igual a igual a = menor do que < maior do que > Significado Operador em Linguagem Algorítmica

(5)

Exemplo 1: Fazer um algorítmo em que dadas as três notas individuais em três aspectos do ano escolar (Lab, Exame_inter, Exame_final) para um estudante chamado Nome. O algorítmo deve calcular a média final com pesos de 20%,

30% e 50%, respectivamente. O relatório de saída deve fornecer o nome do aluno, suas notas individuais,sua média final e uma mensagem caso o aluno esteja

reprovado. A variável Média é real.

Algoritmo Relatório

Variáveis: Lab, Exame_inter, Exame_final, Média : reais

Nome : cadeia de caractere

Início

1. [Ler dados]

Leia [Nome, Lab, Exame_inter, Exame_final] 2. [Calcular a média]

Média  0.2 * Lab + 0.3 * Exame_inter + 0.5 * Exame_final

(6)

Testes e Condições 6

3. [Imprimir resultados]

Escreva (´Nome estudante:´, Nome) Escreva (´Nota Laboratório:`, Lab)

Escreva (´Exame Intermediário:`, Exame_inter) Escreva (´Exame Final`, Exame_final)

Escreva ( ´Média Final:`, Média) 4. [Verificar se tem aluno reprovado]

Se Media < 5.0

então Escreva (´Reprovado`)

Fim

Exemplo 1: Continuação....

(7)

Exemplo 2:

Faça um algoritmo que leia dois valores, determine o maior

deles e o imprima com uma mensagem de identificação. Assumir que

todas as variáveis são inteiras

.

Algoritmo Mostre

Variáveis: Valor1, Valor2, Max : inteiras Início

1. [Ler os valores]

Leia ( Valor1, Valor2 ) 2. [Determinar o maior]

Se Valor1 > Valor2 então Max  Valor1

Escreva (´O Primeiro valor é maior`) senão Max  Valor2

Escreva (´O Segundo Valor é maior`)

3. [Imprimir o maior valor]

Escreva (´Maior Valor =`, Max) 4. [Terminar]

Fim

(8)

Testes e Condições 8

7.1

7.1

Diagrama de blocos

Diagrama de blocos

-

-

Fluxograma

Fluxograma

 Como já foi dito anteriormente, antes de se fazer um programa,

deve-se fazer um algoritmo de problema. Para tanto temos

utilizado uma linguagem algorítmica que também chamamos de portugol.

 Uma outra maneira de se escrever algoritmos é através de

fluxograma ou diagrama de bloco. No fluxograma, as ações a serem executadas são representadas de maneira gráfica.

 Embora a linguagem algorítmica seja mais utilizada, existem

vários livros que utilizam o fluxograma para explicar partes do algoritmo, devido ao seu forte apelo visual

 A seguir mostramos rapidamente as ferramentas utilizadas para a

(9)

S

S

í

í

mbolo

mbolo

Descri

Descri

ç

ç

ão

ão

Inicio/Fim Delimita o início ou o final das instruções.

Leitura de dados (através do teclado, pex).

Leitura

Avaliação de uma condição.

Cond

Apresentação de resultados.

Resultados

Operacoes Atribuição ou operação de processamento.

Fluxo de execução.

Conexão entre partes do algoritmo.

(10)

Testes e Condições 10

Suponha duas variáveis

numéricas, A e B, com

valores diferentes, e

deseja-se imprimir a

maior delas.

Problema Maior

Variaveis A, B; Inicio 1. Ler(A,B); 2. Se (A > B) entao imprimir A; Senao imprimir B; Fim

Algoritmo Maior

V

Inicio

Ler A,B;

Se A>B

Escreva(B); Escreva(A);

Final

F

(11)

Exemplo 3 :

Faça um algoritmo que leia três números A, B e C e imprima

o valor do maior. Assumir valores distintos e reais.

Algorítmo Max_3

Variáveis A, B, C, Max : reais

Início

1. [Ler dados] Leia (A, B, C)

Em algumas aplicações, uma das alternativas de uma

estrutura Se_Então_Senão pode envolver outras decisões

7.2 Seleção de Ações Alternativas :

Ses Encaixados

7.2 Seleção de Ações Alternativas : Ses Encaixados

(12)

Testes e Condições 12

2. [Determinar o maior valor, comparando pares] Se A > B

Então Se A > C

então Max  A ( A > B,A > C )

senão Max  C ( C > A > B ) Senão Se B > C

então Max  B ( B > A, B > C )

senão Max  C ( C > B > A )

3. [Imprimir o maior valor]

Escreva (´Maior valor =`, Max) 4. [Terminar] Fim Exemplo 3: Continuação.... Se A > B Se A > C F V V V A; B; Se B > C F C; C; F Inicio Ler A,B,C; Escreva(Max); Final

(13)

Ex1: Se C1

então Se C2

então S1

senão S2

Em que condições S2 é executado?

Cuidado com a paragrafação (indentação)

onde: C1 e C2 significam

condições e S1 e S2,

comandos

Isso não fica claro.

(14)

Testes e Condições 14

Ex2:

Se C1

Se C1

então Se

C2

então

Se

C2

então

S1

então S1

senão

S2

senão S2

Neste exemplo, o comando

Se C2 só será executado se a condição C1 for

Verdadeira. Se C1 for falsa, nenhum comando será

Executado.

Neste exemplo, o comando

Se C2 só será executado se a condição C1 for verdadeira. Se ela for falsa, o comando S2 será executado

(15)

Exemplo 4: Uma empresa decidiu dar uma gratificação de Natal a seus funcionários. Esta gratificação é calculada com base no número de horas extras trabalhadas e o número de horas de falta. A fórmula para se calcular o prêmio é a seguinte:

Extra – 2 /3 * Faltas.

O prêmio é distribuído segundo a tabela a seguir:

10 <= 10 horas 20 > 10 mas <= 20 horas 30 > 20 mas <= 30 horas 40 > 30 mas <= 40 horas 50 > 40 horas Prêmio (R$)

Extra – 2/3 * Faltas Pede-se um algoritmo e um programa em C, para

ler informações de

funcionários e calcular o prêmio a ser dado.

(16)

Testes e Condições 16

Algoritmo Bônus

Variáveis: Extras, Faltas, Pagamentos : reais Nome : cadeia

Início

1. [Ler informações de um funcionário] Leia (Nome, Extras, Faltas)

2. [Calcular o prêmio]

Se Extras – (2/3.0) * Faltas > 40 Então Pagamento  50

Senão Se Extras – (2/3.0) * Faltas >30 Então Pagamento  40

Senão Se Extras – (2/3.0) * Faltas >20 Então Pagamento  30

Senão Se Extras – (2/3.0)*Faltas>10 Então Pagamento  20

Senão Pagamento  10 3. [Imprimir resultados]

Escreva ( ´Prêmio para`, Nome,`=R$`, Pagamento) Fim Exemplo 4: continuação Se A > 40 Se A > 30 Se A > 20 Se A > 10 V F F F V V F V P50; P40; P30; P20; P10;

(17)

Podemos melhorar este algorítmo, calculando o valor do teste (Extra – (2/3.0) * Faltas) somente uma vez. Para isto vamos

introduzir uma variável temporária (Valor_teste).

2.1 [Calcular o valor teste]

Valor_teste  Extras – (2/3.0) * Faltas 2.2 [Calcular o prêmio] Se (Valor_teste > 40) Então Pagamento  50 Senão Se Valor_teste > 30 Então Pagamento  40 Senão Se Valor_teste > 20 Então Pagamento  30 Senão Se Valor_teste > 10 Então Pagamento 20 Exemplo 4: continuação

(18)

Testes e Condições 18

Comando

if

# Sintaxe:

if (

expressão é verdadeira

)

execute comando ou bloco de comandos

# Exemplo:

Falso = 0

Verdadeiro  0

if (contador > 9)

contador = 0;

7.3 Seleção de Ações Alternativas: O Comando

if

Em linguagem C a construção

Se – Então - Senão

é feita através dos comandos if-else:

(19)

# Exemplo:

OBS:

Quando dentro do comando

if

, forem executados

mais de um comando (bloco de comando) é

necessário colocar chaves, {}, para marcar o

início e o fim dos comandos a serem executados.

if (contador >9) {

contador = 0; soma = 32

}

Aqui tem duas ações sendo feitas dentro da condição verdadeira

Chave marcando o fim da condição verdadeira Chave marcando o início da condição verdadeira

(20)

Testes e Condições 20 Fazer um programa em C que leia um número e impri-ma uimpri-ma mensa-gem dizendo se ele é maior, menor ou igual a 10. #include <stdio.h> #include <stdlib.h> main () { /* Início do programa */ int num;

printf ("Digite um numero: "); scanf ("%d",&num);

if (num > 10)

printf ("\n\n O numero digitado eh maior que 10"); if (num == 10) { /* Início do if */

printf ("\n\n Voce acertou!\n");

printf ("O numero digitado e igual a 10."); } /* fim do if*/

if (num < 10)

printf ("\n\n O numero digitado eh menor que 10"); system("pause"); } Observe a chave { marcando o início do if

Exemplo 5

(21)

O Comando else pode ser considerado um complemento do comando if, cujos comandos serão executados

SOMENTE SE a expressão, especificada após o comando if, for 0 (falsa).

#

Sintaxe:

if (

expressão é verdadeira

)

execute comando1 ou bloco1 de comandos

else

execute comando2 ou bloco2 de comandos

Falso = 0

Verdadeiro  0

7.4 Seleção de Ações Alternativas: O Comando

else

(22)

Testes e Condições 22 #include <stdio.h> #include <stdlib.h> main ( ) { int num;

printf ("Digite um numero: "); scanf ("%d", &num);

if (num == 10) {//início então

printf ("\n\n Voce acertou!\n");

printf ("O numero e igual a 10.\n"); }//fim então

else {//início senão

printf ("\n\n Voce errou!\n");

printf ("O numero eh diferente de 10.\\nn"); }//fim senão system("pause"); }

Refazer o programa

em C do exemplo 5

anterior, utilizando

o comando

else

Exemplo 6

Exemplo 6

(23)

7.5 Seleção de Ações Alternativas:

if-else encaixados

É possível aninhar construções do tipo

if-else

em

diversos níveis.

if (cond1) /* if1 */ if (cond2) /* if2 */ comando if2 ; else /* else2 */ comando else2 ; else /* else1 */ if (cond3) /* if3 */ if (cond4) /* if4 */ comando if4 ; else /* else4 */ comando else4 ; else /* else3 */ comando else3 ;

(24)

24

7.6- Exercícios resolvidos - Comando

If

If

-

-

else

else

Exercício 1: Colocar o

Exemplo 1

em Linguagem C

#include <stdlib.h> #include <stdio.h>

main() {

// declarar variáveis

float lab,exame1, exame_final, media; char nome[30];

//1. [Ler dados]

printf( "Digite o nome do aluno: " ); scanf("%s",&nome);

printf("\n\n" );

printf("Digite as notas de: lab, exame1 e exame_final, do aluno:%d\n", nome); scanf("%f%f%f",&lab,&exame1,&exame_final);

//2. [Calcular a média]

(25)

Continuação do Exercício 1

// 3. [imprimir resultados]

printf ("\nNome. estudante:%s\n",nome); printf("\n");

printf("Nota Laboratorio: %f\n\n",lab); printf("Exame1: %f\n\n",exame1);

printf("Exame Final: %f\n\n",exame_final); printf("Media Final: %f\n\n",media);

if(media < 5.0 )

printf("Reprovado\n\n\n");

else

printf("Aprovado\n\n"); system("PAUSE");

(26)

Testes e Condições 26

Exercício 2: Colocar o Exemplo 3 em Linguagem C

#include <stdlib.h> #include <stdio.h> main( ) {// declarar variáveis float A, B, C, max; //1. [Ler dados]

printf( "Digite tres numeros A, B, C\n" ); scanf("%f%f%f",&A,&B,&C);

// 2. [Determinar o maior valor, comparando pares]

if (A > B) { if (A > C)

{ max = A ; //( A > B , A > C )

printf( "\nO maior valor eh o A\n" ); }

else

{ max = C ; // (A > B e C >A )

printf( "\nO maior valor eh o C\n" ); }

}

continua na próxima página

Exemplo 3 : Faça um programa que leia três números A, B e C e imprima o valor do maior.Assumir valores distintos e reais.

(27)

Continuação do Exercício 2 else

{ if (B > C) // ( B > A, B > C )

{ max = B;

printf( "\nO maior valor eh o B\n" ); }

else

{ max = C; // ( C > B > A )

printf( "\nO maior valor eh o C\n" ); }

}

// 3. [Imprimir o maior valor]

printf ("\nMaior valor =%f\n\n", max); system("pause");

} //4. Fim do programa

(28)

Testes e Condições 28

#include <stdlib.h>

#include <stdio.h>

main ( )

{

int a, b, c, maior, meio, menor ;

// declaração de variáveis.

// Leitura de dados

printf(

" Entre com tres numeros inteiros\n"

);

scanf(

"%d%d%d"

,&a,&b,&c);

if ( a > b )

if ( a > c )

{

maior = a;

if ( b > c ) { meio = b; menor = c; }

else { meio = c; menor = b; }

}

else { maior = c; meio = a; menor = b; }

continua na próxima página Exercício 3: Refazer o programa do

Exercício 2 para imprimir os 3 números na ordem crescente.

(29)

else

if ( a > c ) { maior = b; meio = a; menor = c; }

else

{

menor = a;

if ( b > c ) { maior = b; meio = c; }

else { maior = c; meio = b; }

}

printf(

"Em ordem crescente: %d %d %d\n\n"

, menor, meio, maior);

system(

"pause"

);

}

//fim programa

Continuação do Exercício 3

(30)

Testes e Condições 30

7.7- Exercícios para Casa - Comando

If

If

-

-

else

else

1) Colocar em Linguagem C os algoritmos dos exemplos 2, e 4.

2) Fazer um programa em C que leia 4 números (A, B, C, D) e encontre o maior deles. Imprima uma mensagem dizendo qual deles é o maior e o valor do maior.

3) Faça um programa em C que calcule o aumento de salário para o corrente ano. Se salário >1000 o aumento é de 5%. Senão o

aumento é de 7%.

4) Preparar um algoritmo e um programa em C para ler os comprimentos dos três lados de um triângulo (S1, S2, e S3) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de S1, S2, e S3 e B e C os outros dois lados. Então:

Se A ≥ B + C nenhum triangulo é formado

Se A2 = B2 + C2 um triangulo retangulo é formado, Se A2 > B2 + C2 um triangulo obtusangulo é formado Se A2 < B2 + C2 um triangulo acutangulo é formado

(31)

5) Faça um programa que leia dois valores, o primeiro servindo de indicador de operação e o segundo correspondendo ao raio de uma circunferência. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a área desta circunferência. Se o valor lido for 2, calcular e imprimir o perímetro da circunferência. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendo que o indicador de operação foi mal fornecido.

6) Fazer um programa que: dada a altura e peso de uma pessoa, calcule seu índice de massa corporal. Fórmula: peso dividido por altura ao quadrado. Faixas: <= 18,5 - abaixo do peso normal; > 18,5 e <= 25 - peso normal; > 25 e <=30 - peso acima do normal; acima de 30 - peso excessivo.

(32)

Testes e Condições 32

7) Faça um programa que leia dois valores, o primeiro servindo de indicador de operação e o segundo correspondendo ao raio de uma circunferência. Caso o primeiro valor lido seja igual a 1, calcular e imprimir a área desta circunferência. Se o valor lido for 2, calcular e imprimir o perímetro da circunferência. E se o valor lido for diferente destes dois valores; imprimir uma mensagem dizendo que o indicador de operação foi mal fornecido.

8)Fazer um programa que resolva uma equação de segundo grau, realizando consistências dos valores do discriminante e do coeficiente "a". Caso o discriminante seja negativo, deverá apenas ser impressa a mensagem: " Esta equação não possui raízes reais" . Caso o coeficiente "a" seja igual à zero, deverá ser impressa a mensagem: " Esta não é uma equação de segundo grau" e deverá ser fornecido o valor da única raiz. Se o discriminante for maior ou igual a zero e o coeficiente "a" não for nulo, deverão ser impressas: "as raízes da equação: ax2 + bx + c = 0 são R1 = xxx e R2 = xxx".

55

(33)

Resolução Exercícios para Casa (1)

#include <stdlib.h>

#include <stdio.h>

// Programa: Mostre o maior de 2 números

main()

{

int Valor1, Valor2, Max;

//1. [Ler os valores]

printf(

"Digite dois numeros \n"

);

scanf(

"%d%d"

,&Valor1,&Valor2 );

//2. [Determinar o maior]

if (Valor1 > Valor2)

{ Max = Valor1;

printf (

"\nO Primeiro valor eh maior\n"

);

continua na próxima

página

Ex casa 1: Colocar o exemplo 2 em C

(34)

Testes e Condições 34

else

{

Max = Valor2;

printf (

"\nO Segundo Valor eh maior\n"

);

}

//3. [Imprimir o maior valor]

printf(

"Maior Valor =%d\n\n"

, Max);

//4. [Terminar]

system(

"PAUSE"

);

}

(35)

#include <stdlib.h> #include <stdio.h> #include <math.h> main()

{ int a, b, c;

float delta, raiz1, raiz2;

printf("digite os coeficientes a, b, c da equacao\n"); scanf("%d%d%d",&a,&b,&c);

if(a==0)

{ printf(" esta equacao eh de 1o. grau\n"); raiz1= -c/b;

printf(" sua raiz eh: %f \n", raiz1); } else { delta=(pow(b,2)-4*a*c); if(delta >= 0) { raiz1=(b+sqrt(delta))/(2*a); raiz2=(b-sqrt(delta))/(2*a);

printf("as raizes sao:R1= %f,R2=%f \n",raiz1,raiz2); }

else printf("Esta equacao nao possui raizes reais\n"); }

(36)

Testes e Condições 36

7.8 Aplicação: O paradoxo da inovação

Os dados do censo (que ocorre a cada 10 anos) de 1880 dos EUA levaram quase 8 anos para serem processados. Temia-se que os dados do censo de 1890 não estivessem processados em 1900.

Herman Hollerith

(estatístico):

Foi encarregado pela Agência Estatística

dos EUA de desenvolver uma técnica

para

acelerar

o processamento dos dados

do censo, levando apenas 3 anos.

(37)

Lei de Moore: O fundador da Intel, Gordon Moore, constatou

que a capacidade de processamento dos computadores dobra a cada 1 ano, enquanto os custos permanecem fixos.

Problema: Imagine que uma tarefa deve ser processada e

levará 8 anos e que não pode ser movida da máquina uma vez iniciada. De acordo com a Lei de Moore deve-se esperar a

melhoria dos processadores ou deve-se começar hoje ?

?

Solução: O senso comum diz que é melhor começar agora,

mas antes de por a mão na massa é bom olhar a Tabela dada a seguir:

!

(38)

38 Tempo Total (anos) Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) 0 8 8 1 4 5 Início 0º. ano 1º. ano 2 2 4 2º. ano Final 8º. ano 5º. ano 4º. ano 3 1 4 3º. ano 4º. ano 4 0,5 4,5 4º. ano 4º. ano

!

Observação: É melhor começar no 2º. ou 3º. Ano, pois com isso pode-se terminar antes a tarefa. Esta análise também pode ser útil para dividir recursos entre produção e pesquisa.

(39)

Forma Geral: O paradoxo da inovação pode ser formulado

de acordo com três parâmetros: tempo de desenvolvimento t, taxa de aperfeiçoamento a e tempo de processamento p.

t

a

p

t

y

)

/

1

(

No caso anterior, os valores eram:

p = 8 e a = 50% = 0.5.

t

t

y

2

8

A fórmula para o caso geral

será dada por:

Considerando-se t

variável, a

e p

fixos, para encontrar o menor

Alternativa: Vale

a pena esperar se

(40)

Testes e Condições 40 Tempo Total (anos) Tempo de Desenvolvimento (anos) Tempo de Processamento (anos) 0 8 8 1 4 5 Início 0º. ano 1º. ano 2 2 4 2º. ano Final 8º. ano 5º. ano 4º. ano 3 1 4 3º. ano 4º. ano 4 0,5 4,5 4º. ano 4º. ano

No caso anterior: 8/(1/0.5) = 4 > 1

(41)

// Programa: paradoxo da inovação. #include <stdio.h> #include <stdlib.h> main() { float a, p, r; printf(“Forneça a e p:”); scanf(“%f %f”,&a,&p); r = p/(1/a); if (r > 1.0) printf(“Espere”); else printf(“Comece”); system(“pause”);

Código C

Algoritmo: Inovação variáveis: r,p,a: real; Inicio

Escreva(“Forneça a e p”) Leia (a, p);

r  (p/(1/a)); Se (r > 1.0)

Então Escreva(‘Espere’); Senão

Escreva(‘Comece’); Fim

Exemplo 7

(42)

Testes e Condições 42

Unesp-Campus de Guaratinguetá

FIM

Aula 7

Referências dos slides

Curso de Programação de Computadores Prof. Aníbal Tavares

Profa. Cassilda Ribeiro Prof. Décio Mourão

Prof. Galeno Sena

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Neste tipo de situações, os valores da propriedade cuisine da classe Restaurant deixam de ser apenas “valores” sem semântica a apresentar (possivelmente) numa caixa

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

No final, os EUA viram a maioria das questões que tinham de ser resolvidas no sentido da criação de um tribunal que lhe fosse aceitável serem estabelecidas em sentido oposto, pelo

Taking into account the theoretical framework we have presented as relevant for understanding the organization, expression and social impact of these civic movements, grounded on

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

O Código Civil acrescentou para os cônjuges, além desses deveres, os de fidelidade recíproca e de vida em comum, no domicílio conjugal (art. 1.566), que não

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos