Escolar Documentos
Profissional Documentos
Cultura Documentos
2009/2010
Modularizao
Funes e Procedimentos
LP 2009/20010
ajtavares@ipca.pt
ndice
1.
2.
Funes
2.
Procedimentos
3.
Chamada de Sub-algoritmos
4.
Funes e Procedimentos em C#
1.
Variveis locais
2.
Valor de retorno
3.
Passagem de parmetros
4.
5.
Parmetros de SAIDA
6.
7.
Variveis Globais
LP 2009/20010
ajtavares@ipca.pt
LP 2009/20010
ajtavares@ipca.pt
LP 2009/20010
ajtavares@ipca.pt
Funes
Funo NomeFuncao (Arg1: tipo,..., ArgN: tipo): Tipo
Definio de Variveis
Incio
...
Devolver Expresso
Fim
LP 2009/20010
ajtavares@ipca.pt
Procedimentos
Procedimento NomeProc (V1:tipo,..,VN:tipo,Var R1:tipo,...,RN:tipo)
Var Definio de Variveis
Incio
...
R1 Expresso
...
RN Expresso
Fim
LP 2009/20010
ajtavares@ipca.pt
Chamada/utilizao/invocao de Sub-algoritmos
LP 2009/20010
ajtavares@ipca.pt
Chamada/utilizao/invocao de Sub-algoritmos
Algoritmo Motorista
valor_idade: inteiro
nome: string
status: lgico
Incio
ler(nome, valor_idade)
status Verifica_Idade(valor_idade)
se (status = verdadeiro) ento
escrever(Pode tirar a carta)
seno escrever(No pode tirar a carta)
Fim
LP 2009/20010
ajtavares@ipca.pt
Chamada/utilizao/invocao de Sub-algoritmos
Algoritmo Notas
n1, n2, n3, md : real
cdigo : inteiro
Incio
ler (cdigo)
enquanto (cdigo>0)
ler(n1, n2, n3)
Media(n1, n2, n3, md)
escrever(Media: , md)
ler (cdigo)
fim_enquanto
Fim
LP 2009/20010
ajtavares@ipca.pt
Exemplo:
Funo F(z: inteiro): lgico
varivel x: inteiro
Incio
xz
Devolve verdadeiro
Fim
LP 2009/20010
ajtavares@ipca.pt
10
LP 2009/20010
ajtavares@ipca.pt
11
Funes e Procedimentos em C#
Relao entre conceitos:
LP 2009/20010
ajtavares@ipca.pt
12
Funes e Procedimentos em C#
Relao entre conceitos:
LP 2009/20010
ajtavares@ipca.pt
13
Funes e Procedimentos em C#
Exemplo:
int mdc define o nome (mdc) e o tipo do valor retornado (int) pelo
mtodo mdc
LP 2009/20010
ajtavares@ipca.pt
14
Funes e Procedimentos em C#
Exemplo:
class Exemplo {
static int mdc(int a, int b){
while(a != b) if(a > b) a=a-b; else b=b-a;
return a;
}
public static void Main(string[] args){
int x = 33; int y = 605;
int m = mdc(x,y);
Console.WriteLine("mdc({0},{1})={2}",x,y,m);
}
}
LP 2009/20010
ajtavares@ipca.pt
15
Funes e Procedimentos em C#
Variveis locais:
LP 2009/20010
ajtavares@ipca.pt
16
Funes e Procedimentos em C#
Exemplo:
static float media(float[] v){
float s = 0;
for(int i = 0; i < v.Length; i++) s = s + v[i];
return s/v.Length;
}
LP 2009/20010
ajtavares@ipca.pt
17
Funes e Procedimentos em C#
Valor de retorno:
Esse valor pode ser usado para atribuir um valor a uma varivel ou
mesmo numa expresso, como por exemplo:
m = mdc(x,y)*10;
LP 2009/20010
ajtavares@ipca.pt
18
Funes e Procedimentos em C#
Resumindo:
static
{
...
}
void
soma(int x)
Procedimento: tem uma lista de parmetros de
entrada mas no retorna um resultado
LP 2009/20010
ajtavares@ipca.pt
19
Funes e Procedimentos em C#
Resumindo:
LP 2009/20010
ajtavares@ipca.pt
20
10
Funes e Procedimentos em C#
Passagem de Parmetros:
LP 2009/20010
ajtavares@ipca.pt
21
Funes e Procedimentos em C#
Passagem de Parmetros:
Referncia (ref)
Sada (out)
LP 2009/20010
ajtavares@ipca.pt
22
11
Funes e Procedimentos em C#
Passagem de Parmetros por REFERNCIA:
Durante a sua execuo, o mtodo manipula diretamente as
LP 2009/20010
ajtavares@ipca.pt
23
Funes e Procedimentos em C#
Passagem de Parmetros por REFERNCIA:
class Referencia {
static void troca(ref int a, ref int b){
int t = a;
a = b; b = t;
}
public static void Main(string[] args){
int x = 5; int y = 21;
Console.WriteLine("antes - x:{0}
y:{1}",x,y);
LP 2009/20010
ajtavares@ipca.pt
24
12
Funes e Procedimentos em C#
Passagem de Parmetros por REFERNCIA:
Array passado como parmetro
LP 2009/20010
ajtavares@ipca.pt
25
Funes e Procedimentos em C#
Parmetros de SAIDA:
LP 2009/20010
ajtavares@ipca.pt
26
13
Funes e Procedimentos em C#
Numero varivel de parmetros:
modo de passagem de parmetros em que o mtodo define um array
class MainClass{
public static int soma(params int[] v){
int s = 0;
for(int i = 0; i < v.Length; i++) s = s + v[i];
return s;
}
public static void Main(string[] args){
int t = soma(33,12,22,3,30,44,12,-1);
Console.WriteLine("Soma: {0}",t);
}
}
LP 2009/20010
ajtavares@ipca.pt
27
Funes e Procedimentos em C#
Variveis Globais:
LP 2009/20010
ajtavares@ipca.pt
28
14