Prévia do material em texto
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
1
PROGRAMA BÁSICO
Compiladores: onlinegdb.com, mycompiler.io/pt e VS Code
using System;
namespace MyApp // Tipicamente com o mesmo nome da solução
{
internal class Program //modificador internal: acessa qualquer código no mesmo assembly, mas não de outro
assembly.
{
static void Main(string[ ] args)
{
Console.WriteLine("Hello World!");
}
}
}
TIPO DE DADOS
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
2
Abrir um novo programa.
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
3
1. Noção de função e procedimento
A definição de função em programação é idêntica à da matemática y = f(x), que
expressa uma relação entre os valores de entrada e os de saída em que para cada
conjunto de entrada só existe uma saída, ou seja, cada função só devolve um valor.
Um procedimento é um método que não devolve qualquer valor e é chamado
sozinho, sem estar envolvido em qualquer operação.
Em C# as funções e os procedimentos são implementados com recurso aos
métodos.
2. Método em C#
Um método em C# é constituído por uma assinatura e um bloco de instruções.
[static] <modificador_de_acesso> <tipo_de_dados_de_retorno> <nome_do_metodo>([<lista_de_parametros>] {
<declarações>;
<bloco_de_instruções>;
...
return <expressão>;
}
Definição
1. Indicar se o método é ou não static. Nesta fase da aprendizagem em que
criaremos métodos dentro da classe “Program” que contém a função principal
“static void Main(string[ ] args)”, todos os métodos serão declarados como
“static”.
2. Indicar o tipo de acesso através da definição do modificador de acesso. Nesta
fase da aprendizagem não é necessária qualquer indicação.
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
4
3. Indicar o tipo de dados de retorno, se é inteiro, real, texto, booleano, etc. Para
devolver o valor de retorno utiliza-se a instrução “return”.
4. Indicar o nome do método.
5. Indicar a lista e parâmetros (opcional). Na maior parte das situações um método
precisa de executar as suas instruções utilizando dados diferentes como ponto
de partida. Para poder passar ao método as condições iniciais em que ele deve
ser executado define-se uma lista de parâmetros, que representam valores que
ele está à espera de receber. A cada parâmetro corresponde um argumento
que representa o valor que é passado ao parâmetro do método.
Um parâmetro representa um valor que o método espera receber quando
chamado. O nome de cada parâmetro serve como variável local do método chamado.
Um argumento representa o valor que se passa ao método quando se chama o
método. Ao contrário dos parâmetros os argumentos não tem nomes, são expressões
que podem ou não conter variáveis, constates ou valores. O tipo de dados do
argumento deve estar de acordo com o tipo de dados do parâmetro no método
chamado.
Um método pode ser chamado a partir de qualquer outra parte do código da
mesma classe. Quando o método concluir a execução das instruções ele devolve o
controle ao método que o invocou.
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
5
EXERCÍCIO 1:
using System;
namespace Projeto_1_Cap_9 // Tipicamento com o mesmo nome da solução
{
internal class Program //modificador internal: acessa qualquer código no mesmo
assembly, mas não de outro assembly.
{
static float Soma(int a, int b)
{
int soma;
soma = a + b;
return soma;
}
static void Main(string[] args)
{
//Primeira chamada do método com os valores 2 e 3 como argumentos
Console.WriteLine(Soma(2,3));
// Resultado: 5
//Segunda chamada do método com os valores 4 e 5 como argumentos
Console.WriteLine(Soma(4,5));
// Resultado: 9
//Terceira chamada do método com os valores 6 e 7 como argumentos
//contidos nas variáveis c,d
int c = 6, d = 7;
Console.WriteLine(Soma(c, d));
// Resultado: 13
}
}
}
Projeto_1_Cap_9
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
6
Sequência de ações na chamada e execução de método.
1. O método “Soma” é invocado no método “Main” escrevendo-se o seu nome e
os argumentos, Soma(2,3);
2. Os argumentos 2,3 são passados para os a função que tem definido os
parâmetros (int a, int b).
3. O método executa as instruções para as variáveis “a” e “b”, que neste caso é a
soma dos dois valores.
4. O método devolve o valor da soma.
5. No método Main é utilizado o valor devolvido pelo método “Soma(2,3)”.
As duas chamadas seguintes do método “Soma” no método “Main” exemplificam
a chamada do mesmo método com os valores contidos nas variáveis “a, b” e “c, d“
para que compreenda que o nome das variáveis na instrução chamadora não tem de
ser iguais pois trata-se de coisas diferentes, uma coisa são os valores contidos nos
argumentos que passamos ao método e outra coisa são os parâmetro do método
definido como (int a, int b).
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
7
EXERCÍCIO 2: Calcular o volume de um recipiente:
Método que implementa a função de cálculo do volume de um cilindro.
Escreva e teste uma função (método) que devolva o volume calculado do cilindro. A
função (método) deverá receber como argumento um número float.
using System.Reflection.Metadata;
namespace Projeto_2_Cap_9
{
internal class Program
{
static float Quadrado(float raio, float altura)
{
const float pi = 3.1416f;
return pi * raio * raio * altura;
}
static void Main(string[] args)
{
Console.Write("Digite o valor do raio em metros: ");
float raio = float.Parse(Console.ReadLine());
Console.Write("Digite o valor da altura em metros: ");
float altura = float.Parse(Console.ReadLine());
Console.WriteLine("O reservatório tem {0:f2} m3", Quadrado(raio,
altura));
}
}
}
Projeto_2_Cap_9
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
8
EXERCÍCIO 3: Escreva um programa que valide o intervalo das horas (0-23) e dos
minutos (0-59) introduzidos pelo utilizador, utilizando métodos.
Se os valores estiverem corretos os métodos devolvem o valor “verdadeiro”, caso
contrário devolvem o valor “falso”.
using System.ComponentModel.Design;
namespace Projeto_3_Cap_9
{
internal class Program
{
static bool ValidaHoras(int horas){
if (horas >= 0 && horas <= 23)
return true;
else
return false;
}
static bool ValidaMinutos(int minutos)
{
if (minutos >= 0 && minutos <= 59)
return true;
else
return false;
}
static void Main(string[] args)
{
Console.WriteLine("Que horas são?");
Console.Write("Horas: ");
int h = int.Parse(Console.ReadLine());
Console.Write("Minutos: ");
int m = int.Parse(Console.ReadLine());
if (ValidaHoras(h) && ValidaMinutos(m))
{
Console.WriteLine("São {0}:{1}.", h, m);
}
else
{
Console.WriteLine("Hora incorreta!");
}
}
}
}
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
9
EXERCÍCIO 3: continuação
Projeto_3_Cap_9
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
10
EXERCÍCIO 4: Escreva e teste um procedimento (método) que apresente no ecrã a
parte inteira e fracionária de um número real introduzido pelo utilizador. O
procedimento (método) deverá receber como argumento número real.
Void – tipo de dados de retorno de um método que não devolve qualquer valor.
namespace Projeto_4_Cap_9
{
internal class Program
{
static void IntFrac(float x)
{
Console.WriteLine("Parte inteira {0} \n", (int)x);
Console.WriteLine("Parte fracionaria {0:F3} \n", x - (int)x);
}
static void Main(string[] args)
{
float num;
Console.Write("Escreva um numero real: ");
num = float.Parse(Console.ReadLine());
IntFrac(num);
}
}
}
Projeto_4_Cap_9
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
11
EXERCÍCIO Extra: Revisão da utilização do...while (instrução de repetição).
Um bom exemplo da utilização de métodos é a criação de menus para diferentes
funcionalidades de um programa. A implementação dos menus é feita com recurso a
ciclos “do...while” e a “switchs” que chamam os diferentes métodos com base na
escolha do utilizador.
namespace Projeto_4_Cap_8
{
internal class Program
{
static void Main(string[] args)
{
int numero, contar = 0;
do
{
Console.WriteLine("Insira um numero: ");
numero = int.Parse(Console.ReadLine());
if (numero != 0)
{
contar++;
}
} while (numero != 0);
Console.WriteLine("Foram inseridos {0} numeros. ", contar);
}
}
}
Projeto_4_Cap_8
Capítulo 9 - C# (C Sharp) - Métodos
_______________________________________________________________________________________________________________________________________________________
12
EXERCÍCIO 5:
using System;
namespace Projeto_5_Cap_9
{
internal class Program
{
static void Ola() {
Console.WriteLine("Ola");
}
static void BomDia() {
Console.WriteLine("Bom dia!");
}
static void ComoEsta() {
Console.WriteLine("Como esta? ");
}
static void Main(string[] args) {
int op = 0;
do {
Console.WriteLine("Saudacoes");
Console.WriteLine("1 - Ola");
Console.WriteLine("2 - Bom dia");
Console.WriteLine("3 - Como esta");
Console.WriteLine("0 - Sair");
Console.WriteLine("Escolha a opcao: ");
op = int.Parse(Console.ReadLine());
Console.Clear();
switch (op) {
case 1:
Ola();
break;
case 2:
BomDia();
break;
case 3:
ComoEsta();
break;
}
if (op != 0) {
Console.WriteLine("Enter para voltar ao menu...");
Console.ReadLine();
Console.Clear();
}
} while (op != 0);
} } }