Funções PDF

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 57

03

Mestrado em Ciência da Computação


Estrutura de Dados

Memória e Funções
Revisão, Entrada-Processamento-Saída e Passagem de parâmetros

Material gentilmente oferecido pelo Prof. Rafael Liberato

André Luis Schwerz


1
[email protected]
Sumário
● Modelo Entrada-Processamento-Saída (EPS)
○ Significado
○ Níveis de abstração
○ Diferentes formas de acordo com a perspectiva
● Modelo EPS na perspectiva Programa
○ Entrada
○ Saída
● Funções
○ Comportamento
○ Passagem de Parâmetro
● Modelo EPS na perspectiva Função
○ Entrada
○ Saída
● Etapas no desenvolvimento de uma função

2
Modelo Entrada-Processamento-Saída (EPS)

ENTRADA

PROCESSAMENTO

SAÍDA

3
Modelo Entrada-Processamento-Saída (EPS)
Significado

Cálculo do IMC

ENTRADA 2 O QUE
eu preciso / Altura e peso
2
eu tenho

COMO
Aplicar a fórmula para efetuar o
3 cálculo do índice e identificá-lo na 3
PROCESSAMENTO
fazer tabela do IMC.

Determinar uma classificação sobre


1 O QUE o peso de um indivíduo com base
1
SAÍDA eu quero no Índice de Massa Corporal (IMC)

4
Modelo Entrada-Processamento-Saída (EPS)
Significado
Encontrar um
elemento em um vetor
ENTRADA 2 O QUE
eu preciso / Conjunto dos valores inteiros e o
valor a ser encontrado
2
eu tenho

COMO
Comparar o valor a ser encontrado
3 com cada elemento do conjunto 3
PROCESSAMENTO
fazer até encontrá-lo.

Verificar se um determinado valor


1 O QUE está contido em um conjunto de
1
SAÍDA eu quero números inteiros

5
Modelo Entrada-Processamento-Saída (EPS)
Níveis de Abstração
Função

ENTRADA
Aplicação

PROCESSAMENTO
ENTRADA
Função
SAÍDA ENTRADA

PROCESSAMENTO Função PROCESSAMENTO

ENTRADA

SAÍDA

PROCESSAMENTO

SAÍDA

SAÍDA
6
Modelo Entrada-Processamento-Saída (EPS)
Níveis de Abstração
Aplicação

ENTRADA

PROCESSAMENTO

SAÍDA

7
Modelo Entrada-Processamento-Saída (EPS)
Níveis de Abstração
Aplicação

Função
ENTRADA

ENTRADA

PROCESSAMENTO
PROCESSAMENTO

SAÍDA

SAÍDA

8
Modelo Entrada-Processamento-Saída (EPS)
Níveis de Abstração Função

2 ENTRADA

PROCESSAMENTO
ENTRADA

1 3 SAÍDA

PROCESSAMENTO Função

4 ENTRADA

6
PROCESSAMENTO
SAÍDA

5 SAÍDA
9
Modelo Entrada-Processamento-Saída (EPS)
Diferentes formas de acordo com a perspectiva

Aplicação Função
1. Console (scanf) 1. Parâmetros com valores absolutos
ENTRADA 2. Literal (valores absolutos) 2. Parâmetros com referências
3. Argumentos na execução
4. Arquivo

PROCESSAMENTO

1. Console (printf) 1. Retorno (return)


2. Arquivo 2. Parâmetro referência
SAÍDA

10
Modelo Entrada-Processamento-Saída (EPS)
Diferentes formas de acordo com a perspectiva

11
Modelo EPS na perspectiva Aplicação
ENTRADA
Perspectiva Aplicação
Exemplos
1. Console (scanf)
2. Literal (valores absolutos)
Gasto com combustível em uma viagem 3. Argumentos na execução
4. Arquivo
int main(){

int distancia;
float preco, consumo;

//ENTRADA
printf("Distancia (Km): ");
scanf("%d", &distancia);
printf("Preco combustivel (Litro): ");
scanf("%f", &preco);
printf("Consumo (Km por L): ");
scanf("%f", &consumo);

//PROCESSAMENTO
float qtdeLitros = distancia / consumo;
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}

12
Modelo EPS na perspectiva Aplicação
ENTRADA
Perspectiva Aplicação
Exemplos
1. Console (scanf)
2. Literal (valores absolutos)
Gasto com combustível em uma viagem 3. Argumentos na execução
4. Arquivo
int main(){ 2 //ENTRADA
distancia = 90;
int distancia; preco = 3.2;
float preco, consumo; consumo = 8.5;

1 //ENTRADA
Terminal
printf("Distancia (Km): ");
scanf("%d", &distancia); 3 //ENTRADA $ gcc -o calculo calculo.c
printf("Preco combustivel (Litro): "); distancia = atoi(argv[1]);
scanf("%f", &preco); $ ./calculo 90 3.2 8.5
preco = atof(argv[2]);
printf("Consumo (Km por L): "); consumo = atof(argv[3]);
scanf("%f", &consumo);
Arquivo: in.txt
//PROCESSAMENTO
float qtdeLitros = distancia / consumo; 4 //ENTRADA 90
float total = qtdeLitros * preco; FILE *file_in = 3.2
fopen("in.txt","r"); 8.5
//SAÍDA fscanf(file_in,"%d",&distancia);
printf("Valor combustivel: %.2f\n",total); fscanf(file_in,"%f",&preco);
} fscanf(file_in,"%f",&consumo);
fclose(file_in);

13
Modelo EPS na perspectiva Aplicação
SAÍDA
Perspectiva Aplicação
Exemplos
1. Console (printf)
2. Arquivo
Gasto com combustível em uma viagem

int main(){

int distancia;
float preco, consumo;

//ENTRADA
printf("Distancia (Km): "); 2 //SAÍDA
scanf("%d", &distancia); FILE *file_out = fopen("out.txt","w");
printf("Preco combustivel (Litro): "); fprintf(file_out,"Valor combustivel: %.2f\n",total);
scanf("%f", &preco); fclose(file_out);
printf("Consumo (Km por L): ");
scanf("%f", &consumo);
Arquivo: out.txt
//PROCESSAMENTO
float qtdeLitros = distancia / consumo; Valor combustivel: 33.8
float total = qtdeLitros * preco;

1 //SAÍDA
printf("Valor combustivel: %.2f\n",total);
}

14
Modelo EPS na perspectiva Aplicação
Síntese

ENTRADA PROCESSAMENTO SAÍDA

Console (scanf)
1 scanf("%d", &distancia);
scanf("%f", &preco);
scanf("%f", &consumo); float qtdeLitros, total;

Literal (valores absolutos) qtdeLitros = distancia /consumo; Console (printf)


total = qtdeLitros * preco;
2 distancia = 90; 1
preco = 3.2; printf("Valor combustivel: %.2f\n",total);
consumo = 8.5;

Argumentos na execução Arquivo


3 distancia = atoi(argv[1]);
preco = atof(argv[2]);
FUNÇÃO FILE *file_out = fopen("out.txt","w"); 2
fprintf(file_out,
consumo = atof(argv[3]); "Valor combustivel: %.2f\n",
float total = total);
Arquivo calculaCusto(distancia,consumo,qtdeLitros);
fclose(file_in);
4 FILE *file_in =
fopen("in.txt","r");
fscanf(file_in,"%d",&distancia);
fscanf(file_in,"%f",&preco);
fscanf(file_in,"%f",&consumo);
fclose(file_in); 15
FUNÇÕES

16
Funções
Modelo EPS

Programa

ENTRADA Função

ENTRADA

PROCESSAMENTO

PROCESSAMENTO

SAÍDA

SAÍDA

17
Funções
Comportamento

Antes de prosseguirmos com as diferentes formas de entrada e saída


utilizadas nas funções, vamos relembrar o comportamento da execução das
funções.

main função1 função2 função2


P
I
L
H função1
A

main
Escopo da função
Uma função não tem acesso ao escopo da outra. Por exemplo, a função1 não Pilha de Execução
consegue “enxergar” os parâmetros e/ou variáveis locais declaradas em
função2 ou main. 18
Passagem de Parâmetro:
Uma forma de comunicação entre as FUNÇÕES

19
Funções
Passagem de Parâmetro

Passando parâmetros por valor absoluto

main soma
int soma(int n1, int n2){
int t = n1 + n2;
P num1 num2 n1
return t; I 1 2 1 t
} L #20 #24 @50
H total
n2
@58
A 2
int main(){ @54
#28
int num1 = 1;
int num2 = 2;

int total = soma(num1, num2);

printf("%d\n", total);
}

20
Funções
Passagem de Parâmetro

Passando parâmetros por referência

main soma
int soma(int* n1, int* n2){
int t = (*n1) + (*n2);
P num1 num2 n1
return t; I 1 2 t
} L #20 #24 @50
H total
n2
@58
A
int main(){ @54
#28
int num1 = 1;
int num2 = 2;

int total = soma(&num1, &num2);

printf("%d\n", total);
}

21
Funções
Passagem de Parâmetro

Passando parâmetros por referência

main soma
int soma(int* n1, int* n2){
int t = (*n1) + (*n2);
P num1 num2 n1
return t; I 1 2 #20 t
} L #20 #24 @50
H total
n2
@58
A #24
int main(){ @54
#28
int num1 = 1;
int num2 = 2;

int total = soma(&num1, &num2);

printf("%d\n", total);
}

22
Voltando ao exemplo:
Gasto com combustível em uma viagem

23
Modelo EPS na perspectiva FUNÇÃO
Diferentes formas de Entrada e Saída

Aplicação Função
1. Console (scanf) 1. Parâmetros com valores absolutos
ENTRADA 2. Literal (valores absolutos) 2. Parâmetros com referências
3. Argumentos na execução
4. Arquivo

PROCESSAMENTO

1. Console (printf) 1. Retorno (return)


2. Arquivo 2. Parâmetro referência
SAÍDA

24
ENTRADA SAÍDA

Modelo EPS na perspectiva FUNÇÃO Perspectiva FUNÇÃO


1. Parâmetros com
Perspectiva FUNÇÃO
1. Retorno (return)
Entrada valores absolutos 2. Parâmetro referência
2. Parâmetros com
referências
Gasto com combustível em uma viagem

int main(){

int distancia;
float preco, consumo; Valor absoluto

//ENTRADA 1 //PROCESSAMENTO
float total;
distancia = 90; total = calcula(distancia, preco, consumo);
preco = 3.2;
consumo = 8.5;

//PROCESSAMENTO
float qtdeLitros = distancia / consumo;
float total = qtdeLitros * preco; Referência
//SAÍDA
2 //PROCESSAMENTO
printf("Valor combustivel: %.2f\n",total); float total;
} total = calcula(&distancia, &preco, &consumo);

25
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

Gasto com combustível em uma viagem


ENTRADA
float calcula(int dist, float preco,float consumo) Passando parâmetros por valor ABSOLUTO
{
float qtde = dist / consumo;
float total = qtde * preco;

return total;
}
main calcula
distancia dist qtde
int main(){
P 90 90

I
int distancia; #10 @50 @62
float preco, consumo;
L
total preco preco total

H
//ENTRADA 3.2 3.2

A
distancia = 90; #22 #14 @54 @66
preco = 3.2; consumo consumo
consumo = 8.5;
8.5 8.5
1 //PROCESSAMENTO
//PROCESSAMENTO #18 @58
float
floattotal;
qtdeLitros = distancia / consumo;
total = calcula(distancia, preco, consumo);
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
26
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

Gasto com combustível em uma viagem


ENTRADA
float calcula(int dist, float preco,float consumo) Passando parâmetros por valor ABSOLUTO
{
float qtde = dist / consumo;
float total = qtde * preco;

return total;
}
main calcula
distancia dist qtde
int main(){
P 90 90 10.6

I
int distancia; #10 @50 @62
float preco, consumo;
L
total preco preco total

H
//ENTRADA 33.9 3.2 3.2 33.9

A
distancia = 90; #22 #14 @54 @66
preco = 3.2; consumo consumo
consumo = 8.5;
8.5 8.5
1 //PROCESSAMENTO
//PROCESSAMENTO #18 @58
float
floattotal;
qtdeLitros = distancia / consumo;
total = calcula(distancia, preco, consumo);
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
27
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

Gasto com combustível em uma viagem


ENTRADA
float calcula(int* dist, float* preco,float* consumo) Passando parâmetros por REFERÊNCIA
{
float qtde = (*dist) / (*consumo);
float total = qtde * (*preco);

return total;

main calcula
}

distancia dist qtde


int main(){
P 90

I
int distancia; #10 @50 @74
float preco, consumo;
L
total preco preco total

H
//ENTRADA 3.2

A
distancia = 90; #22 #14 @58 @78
preco = 3.2; consumo consumo
consumo = 8.5;
8.5
2 //PROCESSAMENTO
//PROCESSAMENTO #18 @66
float
floattotal;
qtdeLitros = distancia / consumo;
total = calcula(&distancia, &preco, &consumo);
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
28
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

Gasto com combustível em uma viagem


ENTRADA
float calcula(int* dist, float* preco,float* consumo) Passando parâmetros por REFERÊNCIA
{
float qtde = (*dist) / (*consumo);
float total = qtde * (*preco);

return total;

main calcula
}

distancia dist qtde


int main(){
P 90 #10

I
int distancia; #10 @50 @74
float preco, consumo;
L
total preco preco total

H
//ENTRADA 3.2 #14

A
distancia = 90; #22 #14 @58 @78
preco = 3.2; consumo consumo
consumo = 8.5;
8.5 #18
2 //PROCESSAMENTO
//PROCESSAMENTO #18 @66
float
floattotal;
qtdeLitros = distancia / consumo;
total = calcula(&distancia, &preco, &consumo);
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
29
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

Gasto com combustível em uma viagem


ENTRADA
float calcula(int* dist, float* preco,float* consumo) Passando parâmetros por REFERÊNCIA
{
float qtde = (*dist) / (*consumo);
float total = qtde * (*preco);

return total;

main calcula
}

distancia dist qtde


int main(){
P 90 #10 10.6

I
int distancia; #10 @50 @74
float preco, consumo;
L
total preco preco total

H
//ENTRADA 33.9 3.2 #14 33.9

A
distancia = 90; #22 #14 @58 @78
preco = 3.2; consumo consumo
consumo = 8.5;
8.5 #18
2 //PROCESSAMENTO
//PROCESSAMENTO #18 @66
float
floattotal;
qtdeLitros = distancia / consumo;
total = calcula(&distancia, &preco, &consumo);
float total = qtdeLitros * preco;

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
30
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Entrada

ENTRADA ENTRADA
Passando parâmetros por Passando parâmetros por
VALOR REFERÊNCIA

main calcula main calcula


distancia dist qtde distancia dist qtde

P 90 90 10.6 P 90 #10 10.6

I #10 @50 @62 I #10 @50 @74

L L
total preco preco total total preco preco total

H H
33.9 3.2 3.2 33.9 33.9 3.2 #14 33.9

A A
#22 #14 @54 @66 #22 #14 @58 @78
consumo consumo consumo consumo
8.5 8.5 8.5 #18
#18 @58 #18 @66

31
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Saída

Gasto com combustível em uma viagem


float calcula(int dist, float preco,float consumo)
SAÍDA
{
float qtde = dist / consumo; Devolvendo valor por meio da instrução RETURN
float total = qtde * preco;

return total;
} main calcula
dist preco

P
int main(){ distancia preco 90 3.2

I
90 3.2 @50 @54
int distancia; consumo qtde
L
#10 #14
float preco, consumo;
H consumo total 8.5
//ENTRADA
A 8.5 @58 @70
distancia = 90; total
preco = 3.2; #18 #22
consumo = 8.5;
@74
1 //PROCESSAMENTO
//PROCESSAMENTO
float
floattotal;
qtdeLitros = distancia / consumo;
total
float =total
calcula(distancia,
= qtdeLitros * preco,
preco; consumo);

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
32
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Saída

Gasto com combustível em uma viagem


float calcula(int dist, float preco,float consumo)
SAÍDA
{
float qtde = dist / consumo; Devolvendo valor por meio da instrução RETURN
float total = qtde * preco;

return total;
} main calcula
dist preco

P
int main(){ distancia preco 90 3.2

I
90 3.2 @50 @54
int distancia; consumo qtde
L
#10 #14
float preco, consumo;
H consumo total 8.5 10.6
//ENTRADA
A 8.5 33.9 @58 @70
distancia = 90; total
preco = 3.2; #18 #22
consumo = 8.5; 33.9
@74
1 //PROCESSAMENTO
//PROCESSAMENTO
float
floattotal;
qtdeLitros = distancia / consumo;
total
float =total
calcula(distancia,
= qtdeLitros * preco,
preco; consumo);

//SAÍDA
printf("Valor combustivel: %.2f\n",total);
}
33
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Saída
SAÍDA
Gasto com combustível em uma viagem
Devolvendo valor por meio de um endereço
float* saida)
void calcula(int dist, float preco,float consumo,
{ de memória (REFERÊNCIA) recebido por
float qtde = dist / consumo;
float total = qtde * preco; parâmetro

}
*saida = total; main calcula
dist preco

P
int main(){ distancia preco 90 3.2

I
90 3.2 @50 @54
int distancia; consumo qtde
L
#10 #14
float preco, consumo;
H consumo total 8.5
//ENTRADA
A 8.5 @58 @70
distancia = 90; saida total
preco = 3.2; #18 #22
consumo = 8.5; #22
@62 @74
2 //PROCESSAMENTO
//PROCESSAMENTO
float
floattotal;
qtdeLitros = distancia / consumo;
calcula(distancia, preco, *consumo,
float total = qtdeLitros preco; &total);

//SAÍDA Para facilitar a fixação, vamos chamar essa


}
printf("Valor combustivel: %.2f\n",total);
forma de Estratégia do SCANF
34
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Saída
SAÍDA
Gasto com combustível em uma viagem
Devolvendo valor por meio de um endereço
float* saida)
void calcula(int dist, float preco,float consumo,
{ de memória (REFERÊNCIA) recebido por
float qtde = dist / consumo;
float total = qtde * preco; parâmetro

}
*saida = total; main calcula
dist preco

P
int main(){ distancia preco 90 3.2

I
90 3.2 @50 @54
int distancia; consumo qtde
L
#10 #14
float preco, consumo;
H consumo total 8.5 10.6
//ENTRADA
A 8.5 33.9 @58 @70
distancia = 90; saida total
preco = 3.2; #18 #22
consumo = 8.5; #22 33.9
@62 @74
2 //PROCESSAMENTO
//PROCESSAMENTO
float
floattotal;
qtdeLitros = distancia / consumo;
calcula(distancia, preco, *consumo,
float total = qtdeLitros preco; &total);

//SAÍDA Para facilitar a fixação, vamos chamar essa


}
printf("Valor combustivel: %.2f\n",total);
forma de Estratégia do SCANF
35
[Código no Repl.it]
Modelo EPS na perspectiva FUNÇÃO
Saída

SAÍDA SAÍDA
Devolvendo valor por meio Devolvendo valor por meio
da instrução RETURN de um endereço de memória (REFERÊNCIA)
recebido por parâmetro

main calcula main calcula


dist preco dist preco

P P
distancia preco 90 3.2 distancia preco 90 3.2

I I
90 3.2 @50 @54 90 3.2 @50 @54
consumo qtde consumo qtde
L L
#10 #14 #10 #14

H H
consumo total 8.5 10.6 consumo total 8.5 10.6

A A
8.5 33.9 @58 @70 8.5 33.9 @58 @70
total saida total
#18 #22 #18 #22
33.9 #22 33.9
@74 @62 @74

Estratégia do SCANF

36
Modelo EPS na perspectiva FUNÇÃO
Síntese

ENTRADA PROCESSAMENTO SAÍDA

Passando parâmetros por valor absoluto


Devolvendo valor pelo RETURN
1 float calcula(int dist, float preco,float consumo) float qtde = dist / consumo;
float total = qtde * preco; 1
return total;

Passando parâmetro por referência Estratégia do Scanf


2 float calcula(int* dist, float* preco,float* consumo) float qtde = (*dist) / (*consumo);
2
*saida = total;
float total = qtde * (*preco);

Deve-se receber por parâmetro o


endereço de memória no qual o
resultado deverá ser atribuído.

float* saida
a função é do tipo void
37
Etapas no desenvolvimento de uma função

38
Etapas no desenvolvimento da função
1. Determinar qual é a saída esperada
2. Identificar qual é a entrada necessária/disponível
3. Escrever o protótipo da função
4. Usar a função criando casos de teste
5. Implementar a função transformando a entrada na saída esperada
6. Testar

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

39
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

SAÍDA: Se o elemento está no vetor ou não.

40
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

SAÍDA: Se o elemento está no vetor ou não.

ENTRADA: O vetor e o elemento a ser procurado

41
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor de inteiros

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

SAÍDA: Se o elemento está no vetor ou não.


É necessário somente saber se o elemento
ENTRADA: O vetor e o elemento a ser procurado
está contido no vetor?

É necessário saber a posição do elemento


encontrado?

42
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor de inteiros

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

SAÍDA: Se o elemento está no vetor ou não.


É necessário somente saber se o elemento
ENTRADA: O vetor e o elemento a ser procurado
está contido no vetor?

É necessário saber a posição do elemento


encontrado?
bool busca(int* v, int elemento);

int busca(int* v, int elemento);

43
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor de inteiros

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

SAÍDA: Se o elemento está no vetor ou não.


É necessário somente saber se o elemento
ENTRADA: O vetor e o elemento a ser procurado
está contido no vetor?

É necessário saber a posição do elemento


encontrado?
bool busca(int* v, int elemento);
O que será informado quando o elemento
int busca(int* v, int elemento);
não for encontrado?

44
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int elemento);

45
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int elemento);

int main(){
int vet[5] = {10,20,30,40,50};

printf(“%d \n”, busca(vet, 10)); // Saída Esperada: 0


printf(“%d \n”, busca(vet, 15)); // Saída Esperada: 1
printf(“%d \n”, busca(vet, 50)); // Saída Esperada: 4
printf(“%d \n”, busca(vet, 12)); // Saída Esperada: -1
}
46
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int elemento);

int main(){
int vet[5] = {10,20,30,40,50};

printf(“%d \n”, busca(NULL, 10)); // Saída Esperada: -1


printf(“%d \n”, busca(vet, -10)); // Saída Esperada: -1

47
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int elemento);

int busca(int* v, int elemento){


if (v == NULL) return -1;

int i;
for(i=0; i<
}

48
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int elemento);

int busca(int* v, int elemento){


if (v == NULL) return -1;

int i;
for(i=0; i< OPS… eu também preciso do tamanho do vetor
}

Vamos voltar ao passo 3 49


Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor de inteiros

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho, int elemento);

Agora vamos precisar atualizar os casos de teste no passo 4

50
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor de inteiros

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho, int elemento);

51
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho, int elemento);

int main(){
int vet[5] = {10,20,30,40,50};

printf(“%d \n”, busca(vet, 5, 10)); // Saída Esperada: 0


printf(“%d \n”, busca(vet, 5, 15)); // Saída Esperada: 1
printf(“%d \n”, busca(vet, 5, 50)); // Saída Esperada: 4
printf(“%d \n”, busca(vet, 5, 12)); // Saída Esperada: -1
}
52
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho, int elemento);

int main(){
int vet[5] = {10,20,30,40,50};

printf(“%d \n”, busca(NULL, 5, 10)); // Saída Esperada: -1


printf(“%d \n”, busca(vet, 5, -10)); // Saída Esperada: -1

53
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho,int elemento);

int busca(int* v, int elemento){


if (v == NULL) return -1;

int i;
for(i=0; i< OPS… eu também preciso do tamanho do vetor
}

54
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho,int elemento);

int busca(int* v, int elemento){


if (v == NULL) return -1;

int i;
for(i=0; i<tam; i++){
if(v[i] == elemento) return i;
}
return -1;
} 55
Exemplo Escreva uma função para encontrar um determinado
elemento em um vetor

1. 2. 3. 4.
5.
Determinar Determinar Escrever o Usar a função 6.
Implementar a
qual é a saída qual é a protótipo da criando casos Testar
função
esperada entrada função de teste

int busca(int* v, int tamanho,int elemento);

int busca(int* v, int elemento){ Nesse passo precisamos somente


if (v == NULL) return -1; executar os casos de teste escritos no
passo 4.
int i;
for(i=0; i<tam; i++){
if(v[i] == elemento) return i; Caso alguma saída não tenha o
} comportamento esperado, voltamos
return -1; para implementação no passo 5 ou
} para a escrita do protótipo no passo 3.
56
57

Você também pode gostar