18
1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos No fim da aula entrega da prova corrigida e nota Trabalhos T3: enunciado está disponível como já sabem: basicamente, completar o projeto e implementação do jogo de damas entrega: 9 de junho Maio 2009 2 / 32 Alessandro Garcia © LES/DI/PUC-Rio T2: notas disponíveis até este sábado

Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

1

Aula 19Estrutura de Funções - 1

Alessandro GarciaAlessandro GarciaLES/DI/PUC-Rio

Maio 2010

Avisos

• No fim da aula– entrega da prova corrigida e nota

• Trabalhos

– T3: enunciado está disponível• como já sabem: basicamente, completar o projeto e

implementação do jogo de damas

• entrega: 9 de junho

Maio 2009 2 / 32Alessandro Garcia © LES/DI/PUC-Rio

– T2: notas disponíveis até este sábado

Page 2: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

2

Especificação

• Objetivo dessa aula– Examinar em detalhe propriedades estruturais e interfaces

entre funções...• ... não discutidas até aqui:

– Ex.: tratamento de exceções e respectivos acoplamentos entre funções

• Referência básica:– Capítulo 8

Maio 2009 3 / 32Alessandro Garcia © LES/DI/PUC-Rio

Sumário

• Especificação de funções– especificação do acoplamento de funções

• Exemplos de especificação

• Acoplamento excepcional de funções– Condições de retorno (em C) vs.

– Mecanismos dedicados para tratamento de exceções

• Finalização, arrumação da casa

• O grafo estrutura de funções– Para que serve?

Maio 2009 4 / 32Alessandro Garcia © LES/DI/PUC-Rio

– Para que serve?

Page 3: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

3

Definições básicas

• Função é uma porção auto-contida de código que:– possui um nome que pode ser chamado (ativado) de diversos

lugares

– pode retornar zero ou mais valores

– pode depender de e alterar zero ou mais parâmetros

– pode alterar zero ou mais valores do estado do módulo• variáveis internas

• variáveis globais

– pode criar, ler e destruir arquivos, etc...

Maio 2009 5 / 32Alessandro Garcia © LES/DI/PUC-Rio

• Funções e métodos em linguagens OO são basicamente à mesma coisa

Especificação de uma função - I

• Comentário: objetivo da função– define o objetivo principal, sem mencionar ações

complementaresse idêntico ao nome da função deve ser omitido o comentário– se idêntico ao nome da função deve ser omitido o comentário

• Acoplamento– identifica todos os itens da interface e respectivos tipos

• não somente os elementos da assinatura

– são exemplos de itens do acoplamento• parâmetros recebidos• parâmetros retornados (chamada por referência)

Maio 2009 6 / 32Alessandro Garcia © LES/DI/PUC-Rio

• valores retornados, condições de retorno• dados globais recebidos e/ou retornados• arquivos manipulados• exceções sinalizadas (throw)• cancelamentos realizados – exit( num )

Page 4: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

4

Controle da execução de funções

• Condição de retorno– é um valor retornado por uma função indicando o estado final

de seu funcionamento

– exemplos:• CondRetOK - processamento normal

• CondRetErroDado - dados fornecidos fora de sua especificação

• CondRetErroPrecisao - não se atingiu a precisão requerida

– pode ser retornado • como valor retornado

– é o padrão que procuramos utilizar

Maio 2009 7 / 32Alessandro Garcia © LES/DI/PUC-Rio

p q p

• como valor retornado através de parâmetro passado por referência

• como valor de variável global– evitem essa solução

condições Excepcionais (exceções)

Especificação de uma função - I

• Comentário: objetivo da função– define o objetivo principal, sem mencionar ações

complementaresse idêntico ao nome da função deve ser omitido o comentário– se idêntico ao nome da função deve ser omitido o comentário

• Acoplamento– identifica todos os itens da interface e respectivos tipos

• não somente os elementos da assinatura

– são exemplos de itens do acoplamento• parâmetros recebidos• parâmetros retornados (chamada por referência)

Maio 2009 8 / 32Alessandro Garcia © LES/DI/PUC-Rio

• valores retornados, condições de retorno• dados globais recebidos e/ou retornados• arquivos manipulados• exceções sinalizadas (throw)• cancelamentos realizados – exit( num )

Page 5: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

5

Especificação de uma função - II

• Acoplamento – conjunto de exceções sinalizadas– em C: condições de retorno excepcionais

TratadorE1

TratadorE2

TratadorE3Função

Chamadas

Maio 2009 9 / 32Alessandro Garcia © LES/DI/PUC-Rio

– exemplos: nome de arquivo não existe, índice/chave fora do limite, conexão com servidor/banco-dados não pode ser estabelecida, etc...

Chamadas

Especificação de uma função - III

• Acoplamento – conjunto de exceções sinalizadasexemplos de tratadores...

– recuperação por retrocesso: o tratador desfaz modificações nas variáveis locais e retorna um resultado indicando insucesso na operação p ç

– fechamento: o tratador garante que uma conexão/arquivo aberta(o) seja fechada(o)

– notificação ao usuário: nenhuma recuperação, somente notifica ao usuário que uma exceção ocorreu

– armazenamento de erro: criação de registro de erro em arquivo especial

– re-sinaliza uma exceção diferente... Para a função chamadora

– nova tentativa: a mesma função ou uma diferente implementação

Maio 2009 10 / 32Alessandro Garcia © LES/DI/PUC-Rio

o a a u ção ou u a d p ação(daquela função) é invocada

• é usada em técnicas como bloco de recuperação ou programação N-Versões

– tratador vazio: “silencia” a exceção – má pratica e deve ser evitado

– assert: o tratador desempenha algum tipo de operação de assert; quanto a assertiva não é válida, isto resulta em uma nova exceção, possivelmente levando ao término da execução do programa

Page 6: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

6

Exemplo de condição de retorno

• Servidortypedef enum {

CondRetLeuOK , /* Leitura normal */CondRetLeuEOF , /* Encontrou fim de arquivo antes de ler */CondRetLe Erro /* Ocorre erro de leit ra */CondRetLeuErro /* Ocorreu erro de leitura */

} tpCondRetLeu ;

. . .

tpCondRetLeu LerReg( FILE * pArq , tpReg * pReg ){

if ( feof( pArq )){

memset( pReg , 0xFF , sizeof( tpReg )) ;return CondRetLeuEOF ;

} /* if */

Maio 2009 11 / 32Alessandro Garcia © LES/DI/PUC-Rio

Conta = fread( pReg , pArq , sizeof( tpReg ) , 1 ) ;if ( ( ferror( pArq ) != 0 ) || ( Conta != 1 )){

memset( pReg , 0xCC , sizeof( tpReg )) ;return CondRetLeuErro ;

} /* if */return CondRetLeuOK ;

} /* Função LerReg */

Exemplo de condição de retorno

• A função cliente contém o código:

Cond = LerReg( pArqA , pBuffer ) ;switch ( Cond ){

case CondRetLe OKcase CondRetLeuOK :/* código que trata o caso de leitura normal */break ;

case CondRetLeuEOF :/* código que trata o caso de fim de arquivo */break ;

case CondRetLeuErro :printf( "\nErro de leitura no arquivo: %s código \'C\' %c" ,

NomeArqA , errno ) ;printf( "\nPrograma será cancelado" ) ;Finalizar( 4 ) ;

Maio 2009 12 / 32Alessandro Garcia © LES/DI/PUC-Rio

default:printf( "\Erro de execução: LerReg condição desconhecida: %i" ,

Cond ) ;printf( "\nPrograma será cancelado" ) ;Finalizar( 4 ) ;

} /* fim switch */

o break é desnecessário, pois Finalizar( )não retorna

Page 7: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

7

Controle da execução de funções

• Problemas do idioma de tratamento de exceções em C:– sinalização da exceção não é explícita – usa-se return

– overhead em criação de enumerações para cada módulo• assinatura da função não indica explicitamente quais exceções são

levantadas por aquela função

– não existe separação explícita do código de tratamento da exceção (uso de switch ou if)

– o programa não é desviado explicitamente do fluxo normal até que um switch seja encontrado

• Exceções em C++ Java e C#

Maio 2009 13 / 32Alessandro Garcia © LES/DI/PUC-Rio

• Exceções em C++ , Java e C#– é uma condição de término especial indicando a ocorrência de

uma anormalidade no processamento. Exemplos:• falta de memória

• erro de dispositivo

– utiliza estruturas de tratamento de exceções: try ... catch

Tratamento de Exceções: Origem

GoodenoughEH NotationPL/I

ON statements

indicação de ocorrência de exceçãoassociação do tratador

1971

Parnas & Dijkstra

1975 1979

CLUDeclaração explícita

De interface excepcional

1980

1964

Nelio Cacho

Parnas & DijkstraPrincípio de

Encapsulamento eSeparação de Interesses Tratamento de Exceções

em Linguagens Modernas

Page 8: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

8

Especificação de uma função - IV

• Comportamento exceptional de funções – diferente de C, C++ e Java provêem suporte explícito a

tratamento de exceções

Facilidades / Mecanismos paraTratamento de Exceções

ExceçõesTratadores(Handlers)

Desvio do Fluxo e Buscade Tratadores

Maio 2009 15 / 32Alessandro Garcia © LES/DI/PUC-Rio

Definição de “RegiõesProtegidas”

InterfacesExcepcionais

Especificação de uma função - V

• Acoplamento – conjunto de exceções sinalizadas– exceções são levantadas/sinalizadas explicitamente em C++

int funcaoX ( ...) {

// código desprotegido

try {

// código a ser tentado; região protegida

if (x > 10) {throw excecao};

}

catch (tipo excecao)

{acoplamento:

exceção

Maio 2009 16 / 32Alessandro Garcia © LES/DI/PUC-Rio

{

// código do tratador: a ser executado// em caso de exceção

if (x > 10) {throw excecao2};

}

}

exceçãosinalizada

Page 9: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

9

Especificação de uma função - VI

• Acoplamento – conjunto de exceções sinalizadas– exceções são sinalizadas explicitamente em Java

class Count {

acoplamento:exceção

sinalizada

class Count {

public static void main(String args[]) throws java.io.IOException

{

int count = 0;

while (System.in.read() != -1)

count++;

System.out.println("Entrada:"+count+ "caracteres.");

}

Maio 2009 17 / 32Alessandro Garcia © LES/DI/PUC-Rio

}

}

Especificação de uma função - VII

• Acoplamento - cancelamentos realizados – exit( num )

int soma(int a, int b) {int resultado;resultado = a + b;/* "exit" encerra o programa imediatamente e retorna* "resultado" para o sistema operacional */p p /

exit(resultado);}

int main() {int nr1,nr2,valor;printf("Entre com o valor do primeiro número :");scanf("%d",&nr1);printf("Entre com o valor do segundo número :");scanf("%d",&nr2);

/* Chamando a função soma. O comando "return"* da função soma retornará "resultado" para* aqui. */

Maio 2009 18 / 32Alessandro Garcia © LES/DI/PUC-Rio

printf("A soma dos dois é %d\n", soma(nr1,nr2));

/* Nada abaixo disto será executado pois o comando "exit"* chamado na função "soma" acima encerrará imediatamente* o programa e retornará "resultado" para o sistema operacional*/

printf("Entre com o valor a ser retornado para o sistema operacional :");scanf("%d",&valor);...return(valor);

}

Page 10: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

10

Arrumação da casa: finalização do programa

• Ao terminar a execução de um programa todos os recursos alocados neste programa devem ser liberados, independentemente de como foi terminado o programa

• Exemplos:– arquivos abertos

– memória alocada

• Deve ser restaurado estado do sistema para o que era antes de iniciar a execução do programa

Maio 2009 19 / 32Alessandro Garcia © LES/DI/PUC-Rio

• try-catch-finally em Java: código de arrumação da casa para cada função/método

Arrumação da casa: finalização

• Assegurar a liberação de recursos alocados é particularmente complexo quando o programa utiliza funções de finalização capazes de cancelar a execução

• Pode-se utilizar um módulo de arrumação da casa(housekeeping), ou de finalização para ajudar a resolver

• De qualquer maneira é necessária disciplina ao programar

Maio 2009 20 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 11: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

11

Especificação de uma função - VIII

– Impacto em Assertivas de saída (Pós-condição)• estabelece as condições que dados, estados e arquivos devem

satisfazer ao terminar a execução da função

• a assertiva de saída deve valer para todas as formas de saída• a assertiva de saída deve valer para todas as formas de saída(condições de retorno), mesmo que terminado de forma “excepcional”

• cancelamento (exit( num )) deve ser explicitado indicando o que significa cada valor de num retornado pelo programa

– De maneira geral as funções devem satisfazer também as assertivas invariantes do módulo (assertivas estruturais)

t ã d fi id í l d ód l id d i

Maio 2009 21 / 32Alessandro Garcia © LES/DI/PUC-Rio

• estas são definidas no nível do módulo e assumidas e deveriam ser válidas ao entrar e ao sair da função

Especificação do acoplamento/interface

• Interface conceitual– é a definição da interface de uma função sem preocupação com

a sua implementação

Exemplo– Exemplo

InserirSimbolo( tpTabela Tabela, tpSimbolo Simbolo ) tpTabela Tabela, tpIdSimb IdSimbolo, tpCondRet CondRet

• Interface física– é a implementação da interface conceitual, determinando a

forma de realizar fisicamente a interface conceitual• identificação dos parâmetros

Maio 2009 22 / 32Alessandro Garcia © LES/DI/PUC-Rio

• identificação dos parâmetros

• identificação dos dados globais

• identificação dos dados persistentes (arquivos)

– Exemplo, considerando a existência de uma única tabela global static

tpIdSimb InserirSimbolo( tpSimbolo Simbolo )

Page 12: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

12

Especificação do acoplamento / interface

• Interface implícita (relacionadas à interface física)– é formada pelos itens da interface diferentes de parâmetros e

valor de retorno• dados globais

• arquivos

• interface com o usuário

InserirSimbolo( tpTabela Tabela, tpSimbolo Simbolo ) tpTabela Tabela, tpIdSimb IdSimbolo, tpCondRet CondRet

Interface conceitual

Maio 2009 23 / 32Alessandro Garcia © LES/DI/PUC-Rio

p , p , p

tpIdSimb InserirSimbolo( tpSimbolo Simbolo )Interface física Interface implícita

Interface explícita

Especificação do acoplamento: notação

• 1. De forma visual, tais como: modelo de componentes– comentários podem ser usados para indicar dados resultantes ou

modificados

• 2. Interface em notação similar a uma linguagem de programação– listam-se como parâmetros todos os dados ao entrar

• independentemente se serão explícitos ou implícitos

• sem se preocupar com a forma de realizar– por exemplo: diz-se Tabela ao invés de pTabela, mesmo se fisicamente a tabela

será identificada por um ponteiro para a sua cabeça

– listam-se como saída todos os dados resultantes ou modificados

Maio 2009 24 / 32Alessandro Garcia © LES/DI/PUC-Rio

– exemplo

InserirSimbolo( tpTabela Tabela, tpSimbolo Simbolo ) tpTabela Tabela , tpIdSimb IdSimbolo ,

tpCondRet CondRet

Page 13: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

13

Especificação do acoplamento: notação

• 3. Texto explanatório, separando entrada e saída

InserirSimbolo( tpTabela Tabela, tpSimbolo Simbolo ) tpTabela Tabela, tpIdSimb IdSimbolo, tpCondRet CondRet

Recebe dadosTabela - Tabela em que será inserido o símboloSimbolo - Símbolo válido a inserir

Produz resultadosSe não ocorreu erro

Se o símbolo era novo:Cria um idSimbolo diferente dos existentesTabela acrescida do par < idSimbolo, Simbolo >

Se o Simbolo já existia

Maio 2009 25 / 32Alessandro Garcia © LES/DI/PUC-Rio

Tabela inalteradaFimSeidSimbolo o id associado ao Simbolo

Se ocorreu erro: Tabela inalteradaidSimbolo = NIL_SIMBOLO

FimSeCondRet ver tipo tpCondRetTabela

Estrutura de funções

• A estrutura estática de funções é um grafo dirigido– os vértices são os nomes de funções

– as arestas: existe uma aresta de cada função F para cada uma das funções que pode ser chamada pelo código do corpo de F

– origem: no caso de um programa a origem do grafo é a função main( )

F5 F6F1

F2

MÓDULO 1 MÓDULO 3

F8F9

Maio 2009 26 / 32Alessandro Garcia © LES/DI/PUC-Rio

F3 F4

F7

MÓDULO 2

F10

Acoplamentos de exceções tambémpodem ser representadas no grafo

Page 14: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

14

Estrutura de funções

• A estrutura estática de funções é um grafo dirigido– os vértices são os nomes de funções

– as arestas: existe uma aresta de cada função F para cada uma das funções que pode ser chamada pelo código do corpo de F

– origem: no caso de um programa a origem do grafo é a função main( )

F5 F6F1

F2

MÓDULO 1 MÓDULO 3

F8F9

e1 -> e2

Maio 2009 27 / 32Alessandro Garcia © LES/DI/PUC-Rio

F3 F4

F7

MÓDULO 2

F10

Acoplamentos de exceções tambémpodem ser representadas no grafo

e1

Estrutura de funções

• A estrutura estática de funções é um grafo dirigido– os vértices são os nomes de funções

– as arestas: existe uma aresta de cada função F para cada uma das funções que pode ser chamada pelo código do corpo de F

– origem: no caso de um programa a origem do grafo é a função main( )

F5 F6F1

F2

MÓDULO 1 MÓDULO 3

F8F9

e5,e6,e7,e8,e9,e10

Maio 2009 28 / 32Alessandro Garcia © LES/DI/PUC-Rio

F3 F4

F7

MÓDULO 2

F10

Fraco acoplamento normal (falso positivo)Forte acoplamento excepcional

Page 15: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

15

Estrutura de funções : exemplo 2 / 2

• arco de chamadas: é um fragmento de caminho conexo no grafo estrutura de funções

• um arco de chamadas pode ser recursivo– direto: F4 -> F4

– indireto: F9 -> F8 -> F3 -> F5 -> F9

• podem existir funções mortas, ex: F10

• pode existir dependênciacircular entre módulossem que isto F5 F6

F1

MÓDULO 1 MÓDULO 3

Maio 2009 29 / 32Alessandro Garcia © LES/DI/PUC-Rio

configure uma recursão:F8 -> F3 -> F5 -> F6 -> F7

F3 F4

F2

F7

MÓDULO 2

F8F9

F10

Correção da Prova

• Questão 3– A) bastava indicar um conjunto de módulos da arquitetura do

sistema para o problema de César• exemplos de módulos: Sorteio, Soldados, Problema_César,

Interface, etc…

• Foi pedido modelo conceitual da arquitetura– logo, era necessário usar o diagrama que vocês usaram no trabalho

» interfaces e relacionamentos

» não era obrigatório detalhar as interfaces, bastava indicar quais módulos usavam as interfaces de quais outros módulos

» não era para representar a Lista ou Lista Circular neste modelop p

– quem apresentou meramente um modelo conceitual do domínio do problema

» eu considerei parte da questão

Maio 2009 30 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 16: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

16

Correção da Prova

• Questão 3– B) era para representar o modelo físico de uma lista circular

genérica• … e não específica para representar o problema (círculo de

soldados) – logo:– nao tinha tamanho fixo

– e o tipo do valor poderia ser qualquer (void*)

– poderia ser tanto encadeada quanto duplamente encadeada

• E também não era para esquecer de:– representar a cabeça da estrutura

– e assertiva que não existe qualquer elemento que aponta para nulo (já e assertiva que não existe qualquer elemento que aponta para nulo (já que uma lista circular não tem fim)

» caso contrário: o modelo poderia estar representando qualquer tipo de lista encadeada

– cabeça de lista circular só precisa indicar o nó corrente, já que nao tem início e fim (representa um círculo)

Maio 2009 31 / 32Alessandro Garcia © LES/DI/PUC-Rio

Correção da Prova

• Questão 3– C) era para representar o exemplo físico da lista circular para

o problema• … após a remoção de X:

– corrente deveria apontar para Y

– somente cinco elementos

• A instância da cabeça também deveria ser representada

• Valores nos nós/elementos (T, U, etc…) deveriam aparecer, assim como todos os ponteiros

Maio 2009 32 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 17: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

17

Correção da Prova

• Questão 3– D) exemplos de assertivas para função de sorteio

• N tem que ser inteiro

• N>1, ou N>=1

• Não pode ser sorteado soldado que já foi removido

• O nome do sorteado deve fazer parte do conjunto de nomes na lista completa/inicial

• pLista tem que ser diferente de nulo, etc….

• Erros clássicos:– Assertivas que não estavam relacionadas com a função de sorteio

– Ex.: função de remoção é diferente de função de sorteio

» além de problema de coesão

» era dito no enunciado!

Maio 2009 33 / 32Alessandro Garcia © LES/DI/PUC-Rio

Correção da Prova

• Questão 4– A) os comandos de teste eram os mesmos de uma lista

encadeada• =incluir, =destruir, =inserir, =remover, =obterValor, etc…

• era necessário definir os parâmetros de cada comando e as possíveis condições de retorno

• exemplos não eram suficientes

– B) Não, nem todos casos de teste devem ser reutilizados pois, por exemplo:

• não faz sentido executar casos de teste associados com fim de lista (não existe em lista circular)

Maio 2009 34 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 18: Aula 19 Estrutura de Funções - 1inf1301/docs/INF1301_Aula20_E... · 1 Aula 19 Estrutura de Funções - 1 Alessandro Garcia LES/DI/PUC-Rio Maio 2010 Avisos • No fim da aula –

18

FIM

Maio 2009 35 / 32Alessandro Garcia © LES/DI/PUC-Rio