Funções
Objectivos
Iniciar a programação de funções
‰Estudar a chamada de funções
‰Estudar a forma como são executadas as funções
‰Passagem por valor e referência
‰Como conceber funções
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
2
Programação modular
‰Programação modular: divir um programa em módulos
mais pequenos
‰Função: um conjunto de instruções que desempenham
uma tarefa
‰Motivação da programação modular:
ƒ Simplificar a manutenção dos programas
ƒ Simplicar o processo de desenvolvimento de uma aplicação
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
3
Funções
‰Os programas em C++ possuem geralmente o seguinte
formato:
ƒ as directivas de include
ƒ os protótipos das funções
ƒ a definição da função main()
ƒ as definições das restantes funções
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
4
Definição e chamada de funções
‰Definição da função: conjunto de instruções que
implementa a função
‰Chamada da função: instrução que conduz à execução
de uma função
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
5
Definições de funções
‰Definição de funções
ƒ Contém instruções que definem o comportamento
quando uma função é chamada.
‰Função deve ser definida para ser chamada
ƒ Senão um erro de ligação ocorre.
‰Padrão:
TipoRetornado Nome (DeclaracoesParametros)
{
Lista_de_Instrucoes
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
6
Definição de uma função
A definição inclui:
ƒ O tipo retornado: tipo de dados do valor que a função
retorna para o parte do programa que fez a sua chamada
ƒ O nome: nome da função. O nome da função segue as
mesmas regras que as outras variáveis
ƒ A Lista de parâmetros: tipos e nome das variáveis
contendo os valores passados para a função
ƒ O corpo da função: instruções que realizam a a
operação pretendida. Sempre englobado por {}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
7
Tipo retornado
‰Se uma função retorna um valor, o tipo de dados do
valor tem que ser indicado:
int main()
‰Se a função não retorna um valor, o seu tipo é
void:
void saudacao()
{
cout << "\tBom dia!\n";
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
8
Chamada a uma função
‰Na chamada à função que retorna void, utiliza-se o
nome da função seguido de () e ;
saudacao();
‰Quando a função é chamada, o programa executa o
corpo da função
‰Após o fim da execução da função, a execução segue
no ponto da sua chamada
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
9
Chamada a uma função
O fluxo de execução na chamada a uma função:
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
10
Chamada a uma função
‰A função main() pode chamar qualquer número de
funções
‰As funções podem chamar outras funções
‰O compilador tem que saber o seguinte sobre uma
função antes da sua chamada:
ƒ
ƒ
ƒ
ƒ
Nome
Tipo retornado
Número de parâmetros
Tipo de dados de cada parâmetro
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
11
Documentação de uma função
A definição de uma função deve ser precedida por
comentários que indicam:
ƒ O propósito da função
ƒ O que faz e como o faz
ƒ Valores de entrada esperados, se existirem
ƒ Valores que retorna, se existirem
ƒ Saída que realiza, se alguma
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
12
Protótipo de funções
‰Funciona como a declaração da função
‰Padrão:
TipoRetornado Nome (DeclaracoesParametros);
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
13
Funções que não retornam nada
‰É comum haver funções que têm tarefas repetidas, tais
como:
ƒ Mostrar no écran valores
‰Isto pode ser feito com funções void :
™Exemplo
void mostraValoresMonetarios(double euros)
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
14
Protótipo ou declaração de funções
‰ Modos de notificar o compilador sobre uma função
antes de fazer a sua chamada:
ƒ
Colocar a definição da função antes da sua chamada
ƒ
Colocar o protótipo da função (declaração da função)
antes da sua chamada:
void exemplo(int val1, double val2);
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
15
Protótipos
‰Colocar os protótipos no cabeçalho do programa
‰Quando se utilizam protótipos, as definições das
funções podem aparecer por qualquer ordem no
programa fonte
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
16
Enviar dados para uma função
‰Pode-se passar valores para uma função na chamada
à função:
c = sqrt(a*a + b*b);
‰Valores passados para uma função são argumentos
da função
‰Variáveis da função que guardam os valores
passados como argumentos são parâmetros
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
17
Enviar dados para uma função
‰Um parâmetro também pode ser denominado por
parametro formal ou argumento formal
‰Um argumento também pode ser denominado por
parâmetro real (actual parameter) ou argumento real
(actual argument)
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
18
Parâmetros, protótipos e definição de funções
‰Para cada argumento da função,
ƒ O protótipo tem que incluir o tipo de cada parâmetro nos()
ƒ A definição da função tem que incluir a definição de cada
parâmetro nos ()
bool parOuImpar(int); //protótipo
bool parOuImpar (int num) //definição
parOuImpar(val);
//chamada
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
19
Chamada de uma função: como funciona
‰ Os argumentos são avaliados
‰ O valor dos argumentos são copiados para os respectivos
parâmetros
‰ O âmbito (scope) é a função que o utiliza
‰ Uma função pode ter mais do que um parâmetro
‰ Tem que existir uma lista dos tipos de dados no protótipo nos()
e uma definição dos parâmetros, nos(), na definição da função
‰ Os argumentos serão promovidos/despromovidos de modo a
coincidir com o tipos dos parâmetros
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
20
Passagem de dados por valor
‰Passagem por valor: quando um argumento é passado
para uma função, o seu valor é copiado para o
parâmetro respectivo
‰Alterações no parâmetro não afectam o valor do
argumento
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
21
Passagem de dados por valor para parâmetros
‰Exemplo: int val=5;
duplica(val);
val
5
num
5
parâmetro
argumento
‰duplica pode alterar a variável num, mas não irá
afectar a variável val
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
22
A instrução return
‰Utilizada para finalizar a execução de uma função
‰Pode ser colocada em qualquer local da função
ƒ Instruções que se sigam ao return não serão executadas
‰Sem um return, a função termina a sua execução na
última }
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
23
Retornar um valor de uma função
‰A instrução return pode ser utilizada para
retornar um valor (um objecto!)
‰O protótipo e a definição devem indicar o tipo de
dados retornado
‰O valor retornado por uma função pode ser:
ƒ Atribuído a uma variável
ƒ Enviado para cout
ƒ Utilizado numa expressão
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
24
A instrução return:exemplo
bool validaNota(int nota);
// protótipo
bool validaNota(int nota)
// definição
{
int limInf = 0, limSup = 100;
if (nota >= limInf && nota <= limSup)
return true;
else
return false;
}
if (validaNota(exame)) {...} // chamada
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
25
Passagem por valor
‰Passagem por valor
ƒ Gera uma variável diferente, contendo uma cópia do seu
argumento
ƒ No exemplo em seguida, op1 e op2 são parâmetros
passados por valor.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
26
Passagem por referência
‰Mecanismo que permite a uma função trabalhar com o
argumento original da chamada à função, e não com
uma cópia do argumento
‰Permite que uma função modifique valores
armazenados no âmbito da chamada à função
‰Permite que a função “retorne” (devolva) mais do que
valor
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
27
Passagem por referência
‰Passagem por referência
ƒ Um nome alternativo (alias) do argumento correspondente
da chamada
ƒ Modificar o valor do parâmetro passado por referência,
implica uma modificação no argumento correspondente de
chamada
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
28
Passagem por referência
‰A um parâmetro de referência está associado o endereço
de outra variável: o argumento correspondente na
chamada à função.
‰Parâmetro de referência é definido com um &
void dimensoes(int&, int&);
‰Alterações num parâmetro de referência são também
efectuadas no argumento correspondente na chamada à
função.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
29
Passagem por referência: exemplo
void quadrado(int &); //protótipo
void quadrado(int &num) // definição
{
num *= num;
}
int valor = 5;
quadrado(valor);
// chamada
//
João Sousa – Miguel Pedro Silva
valor = 25
Computação e Programação 2007 / 2008
30
Exemplo: divisão inteira
‰Considere a tarefa de dividir dois inteiros
ƒ Podemos obter o quociente e o resto
ƒ Queremos uma função que retorne os dois valores
‰Objectos
Descrição
Objectos
Tipo
Espécie
Movimento
Nome
primeiro operando
integer
variável
recebida
operando1
segundo operando
integer
variável
recebida
operando2
quociente da divisão
integer
variável
recebida e
devolvida
quociente
resto da divisão
integer
variável
recebida e
devolvida
resto
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
31
Problema…
‰De acordo com a tabela anterior, a função tem de
retornar dois objectos …
ƒ As funções só podem retornar um objecto
‰Os parâmetros que vimos até ao momento, foram
passados por valor.
‰São criadas cópias dos seus argumentos.
‰A mudança do valor de um parâmetro, muda apenas a
cópia, não alterando o valor do argumento.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
32
Solução: passagem por referência
‰Passagem de parâmetros por referência
ƒ Os parâmetros são declarados com um “&” após o tipo do
parâmetro e antes do respectivo nome.
‰Um parâmetro por referência é um nome alternativo
(alias) para o argumento correspondente.
‰Mudar o valor do parâmetro por referência muda o
valor do seu argumento correspondente.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
33
Passagem por referência
‰Cabeçalho da função com passagem de parâmetros por
referência:
void divideInteiros (int operando1, int operando2,
int& quociente, int& resto)
‰quociente e resto recebem os valores
apropriados nas expressões de atribuição
‰Os parâmetros de chamada recebem esses valores
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
34
Programa testaDivisaoInt.cpp
#include <iostream>
#include <cassert>
using namespace std;
// <<, cout, endl
// assert()
void divideInteiros(int operando1, int operando2, int& quociente, int& resto);
int main()
{
cout << " Tabela de divisao\n\n";
int quociente,
// variaveis para guardar os valores
resto;
// devolvidos por divideInteiros()
for (int j = 1; j <= 4; j++)
{
for (int i = 1; i <= 4; i++)
{
divideInteiros (i, j, quociente, resto);
cout << i << " divido por " << j
<< " da' o quociente de " << quociente
<< " e o resto de " << resto << endl;
}
cout << endl;
}
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
35
Programa testaDivisaoInt.cpp
void divideInteiros(int operando1, int operando2, int& quociente, int& resto)
{
assert (operando2 != 0);
quociente = operando1 / operando2;
resto = operando1 % operando2;
}
‰Note-se quociente e resto na chamada da funcão
for (int j = 1; j <= 4; j++)
{
for (int i = 1; i <= 4; i++)
{
divideInteiros (i, j, quociente, resto);
...
‰Estas variáveis contêm os valores das variáveis quando
a função acaba a sua execução.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
36
Teste de execução
Tabela de divisao
1
2
3
4
divido
divido
divido
divido
por
por
por
por
1
1
1
1
da'
da'
da'
da'
o
o
o
o
quociente
quociente
quociente
quociente
de
de
de
de
1
2
3
4
e
e
e
e
o
o
o
o
resto
resto
resto
resto
de
de
de
de
0
0
0
0
1
2
3
4
divido
divido
divido
divido
por
por
por
por
2
2
2
2
da'
da'
da'
da'
o
o
o
o
quociente
quociente
quociente
quociente
de
de
de
de
0
1
1
2
e
e
e
e
o
o
o
o
resto
resto
resto
resto
de
de
de
de
1
0
1
0
1
2
3
4
divido
divido
divido
divido
por
por
por
por
3
3
3
3
da'
da'
da'
da'
o
o
o
o
quociente
quociente
quociente
quociente
de
de
de
de
0
0
1
1
e
e
e
e
o
o
o
o
resto
resto
resto
resto
de
de
de
de
1
2
0
1
1
2
3
4
divido
divido
divido
divido
por
por
por
por
4
4
4
4
da'
da'
da'
da'
o
o
o
o
quociente
quociente
quociente
quociente
de
de
de
de
0
0
1
1
e
e
e
e
o
o
o
o
resto
resto
resto
resto
de
de
de
de
1
2
3
0
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
37
Passagem por referência
‰Cada parâmetro passado por referência deve conter &
‰O espaço entre o tipo e o & não é obrigatório
‰Tem que ser utilizado o & no protótipo e na definição
‰Argumentos passados por referência têm que ser
variáveis – não podem ser uma expressão ou um
literal
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
38
Passagem por valor
‰Os parâmetros na chamada devem ser variáveis ou
literais ou expressões do mesmo tipo do da declaração.
‰Objectos de grande dimensão passados por valor
podem ocupar espaço ou tempo excessivo
string mascote (string universidade)
{
if (universidade == "Illinois")
return "Fighting Illini";
...
}
---cout << mascote(escola) << endl;
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
39
Passagem de argumentos
‰A cópia do argumento escola consome tempo.
ƒ Especialmente se o argumento for uma estrutura grande
‰A criação de um alias para um argumento é quase
imediata.
‰Poder-se-á aumentar a velocidade passando o
parâmetro universidade por referência.
‰No entanto, isto é arriscado:
ƒ Podemos mudar o valor de escola se por engano
mudarmos o valor de universidade.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
40
Solução
‰Parâmetros por referência constantes
ƒ Parâmetros por referência cuja declaração é precedida pela
palavra-chave const.
string mascote (const string& universidade)
{ if (universidade == "Illinois")
return "Fighting Illini";
. . .
}
‰Parâmetros por referência constantes são parâmetros
só de leitura dos seus argumentos
ƒ
Assim, não podem ser alterados
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
41
Concepção de funções
‰Especificação da função
ƒ Determina a forma do cabeçalho da função
‰Valor a retornar
‰Nome
‰Parâmetros
‰Algoritmo da função
ƒ Determina o conteúdo do corpo da função
‰Input, Output
‰Ramificações, ciclos
‰Testes, execução e debugging
ƒ Programa driver
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
42
Funções são subprogramas
‰ Os passos de concepção de um programa
podem ser utilizados para as funções
1.
2.
3.
4.
5.
6.
7.
Comportamento
Comportamento
Comportamentodas
dasfunções
funçõesinclui:
inclui:
Objectos
Recebe
Recebevalores
valoresquado
quadoééchamada
chamada
Operações
Retorna
Retornavalores
valoresno
nofinal
finalda
daexecução
execução
Algoritmo
Codificação
Testes, execução, debugging
Manutenção
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
43
Problema
™ As duas escalas mais utilizadas para medir temperaturas são as
Fahrenheit e Celsius. É necessário um programa para
converter temperaturas de graus Fahrenheit em graus Celsius,
utilizando uma função de conversão.
Comportamento
Insira a temperatura em Fahrenheit a
converter para graus Celsius: 99
Temperatura em Celsius: 109.9
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
44
Comportamento e objectos da função
fahrEmCelsius()
‰Recebe valor temperatura Fahrenheit quando chamada
‰Faz a conversão com a respectiva equação
‰Retorna o valor da temperatura equivalente em Celsius
Objectos
Descrição
Tipo
Espécie Movimento
Temperatura
Fahrenheit
double
variável
recebida (in)
Temperatura
Celsius
double
variável
devolvida (out)
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
Nome
temperaturaFahr
45
Parâmetros
‰As variáveis das funções para as quais os valores
podem ser especificados.
‰São definidas entere parêntesis na definição da funcão.
double fahrEmCelsius(double temperaturaFahr)
{
return (temperaturaFahr - 32.0) / 1.8;
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
46
Argumentos
‰Quando uma função é chamada
ƒ A chamada passa os seus valores como argumentos
ƒ Estes são gravados nos parâmetros da função.
double novaTemperatura = fahrEmCelsius(212)
212
double fahrEmCelsius(double temperaturaFahr)
{
return (temperaturaFahr - 32.0) / 1.8;
}
‰A função corre assim usando os seus parâmetros.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
47
Programa converte_temp.cpp
/* converte_temp.cpp converte uma temperatura de graus Fahrenheit
* Para graus Celsius, utilizando respectiva a formula de conversão.
*
* Input: tempFahrenheit
* Output: tempCelsius
*******************************************************************/
#include <iostream>
using namespace std;
double fahrEmCelsius(double temperaturaFahr); // protótipo da funcao
int main()
{
cout << "Este programa converte uma temperatura\n"
<< "de graus Fahrenheit para graus Celsius.\n";
cout <<"\nInsira a temperatura em graus Fahrenheit: ";
double tempFahrenheit;
cin >> tempFahrenheit;
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
48
converte_temp.cpp
double tempCelsius = fahrEmCelsius(tempFahrenheit);
cout << tempFahrenheit << " graus Fahrenheit e’ equivalente a "
<< tempCelsius << " graus Celsius\n";
}
/* fahrEmCelsius converte uma temperatura de graus Fahrenheit
* em graus Celsius.
*
* Recebe: temperaturaFahr, um real com a temperatura em Fahrenheit
* Retorna: a temperatura em graus Celsius equivalente
******************************************************************/
double fahrEmCelsius(double temperaturaFahr) // definicao da funcao
{
return (temperaturaFahr - 32.0) / 1.8;
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
49
Fluxo de execução
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
50
Drivers e Stubs
Driver: função que testa outra função fazendo a sua
chamada
ƒ Útil para testes e debug de funções
‰Stub: função “simplificada” em substituição da
verdadeira função
ƒ Usualmente apresenta uma mensagem indicando que a
função foi chamada.
ƒ Útil para o teste de programas, de modo a verificar o seu
funcionamento lógico
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
51
Stub: exemplo
int main( )
{
for (int contador = 1; contador <= 2; contador++)
{
cout << “Chamada a aMinhaFuncao com contador = "
<< contador << endl;
aMinhaFuncao(contador);
}
}
void aMinhaFuncao(int valor)
{
cout << “A aMinhaFuncao devolveu: "
<< valor <<endl;
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
52
Mais exemplos de funções
double AreaElipse(double comprimento, double largura);
{
const double PI = 3.14159;
double metadeComprimento = comprimento /2.0,
metadeLargura = largura/2.0;
return PI * metadeComprimento * metadeLargura;
}
double PerimetroElipse(double comprimento, double largura);
{
const double PI = 3.14159;
double metadeComprimento = comprimento /2.0,
metadeLargura = largura/2.0;
return 2.0 * PI *
sqrt((pow(metadeComprimento,2) +
pow(metadeLargura,2))/2.0);
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
53
Exemplo de protótipos
#include <iostream>
#include <cmath>
using namespace std;
// cin, cout, <<, >>, ...
// sqrt(), pow(), ...
double AreaElipse(double comprimento, double largura);
double PerimetroElipse(double comprimento, double largura);
int main()
{
cout << “\nPara calcular a area e o perimetro de uma”
<< “\n elipse, insira o seu comprimento e largura: ”;
double
cin >>
double
double
comprimento, largura;
comprimento >> largura;
area = AreaElipse(comprimento, largura);
perimetro = PerimetroElipse(comprimento, largura);
cout << “\nO valor da area e’ “ << area
<< “\n e o do perimtro e’ “ << perimetro << endl;
}
João Sousa – Miguel Pedro Silva
Para
Parachamar
chamaruma
umafunção,
função,utiliza-se
utiliza-seooseu
seu
nome
nomecomo
comose
sefosse
fosseuma
umaexpressão
expressão
Computação e Programação 2007 / 2008
54
Exemplo: função que calcula o mínimo
¾ Problema:
Escrever uma função que, dados dois números reais,
retorne o mínimo dos dois valores.
‰Comportamento:
ƒ Recebe dois valores reais como parâmetros
ƒ Se o primeiro é menor do que o segundo, retorna o primeiro
valor
ƒ Caso contrário retorna o segundo valor
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
55
Exemplo: função que calcula o mínimo (cont.)
‰Objectos:
Objectos (entidades)
Descrição
Tipo
Espécie
Movimento
Nome
primeiro valor
double
variável
recebida
primeiro
segundo valor
double
variável
recebida
segundo
valor mínimo
double
variável
devolvida
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
56
Exemplo: função que calcula o mínimo (cont.)
‰ Operações
i.
ii.
iii.
iv.
v.
Receber dois valores reais
Comparar os dois valores para ver qual deles é o menor
Retornar o primeiro valor
Retornar o segundo valor
Seleccionar iii. ou iv. (não ambos!), baseado no resultado de ii.
‰ Algoritmo
Se primeiro < segundo
devolve primeiro;
caso contrário
devolve segundo.
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
57
Programa TestaMinimo.cpp
/* TestaMinimo.cpp testa a funcao minimo.
****************************************************************/
#include <iostream> // cin, cout, <<, >>
using namespace std;
double minimo(double primeiro, double segundo);
int main()
{
double numero1, numero2;
cout << “Insira dois numeros: ";
cin >> numero1 >> numero2;
cout << "Minimo e’ " << minimo(numero1, numero2) << endl;
}
/* minimo encontra o minimo de dois reais (dupla precisao).
*
* Recebe: primeiro e segundo
* Devolve: o menor valor de primeiro e segundo
************************************************/
double minimo(double primeiro, double segundo)
{
if (primeiro < segundo)
return primeiro;
else
return segundo;
}
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
58
Testes da função
Insira dois numeros: -2 -6
Minimo e’ -6
Insira dois numeros: 3 6
Minimo e’ 3
Insira dois numeros: 0.0023 -34.543
Minimo e’ -34.543
João Sousa – Miguel Pedro Silva
Computação e Programação 2007 / 2008
59
Download

Acetatos - parte 7