Skip to content

Latest commit

 

History

History
220 lines (155 loc) · 12.1 KB

File metadata and controls

220 lines (155 loc) · 12.1 KB

6 Métodos

6.1 Introdução

A experiência tem mostrado que a melhor maneira de desenvolver e manter um programa grande é construir a partir de pequenas partes simples, ou módulos.
Essa técnica é conhecida como dividir e conquistar.

6.2 Módulos de Programa em C#

Em C#, os módulos são chamados de métodos e classes.
Os programas C# são escritos por meio da combinação de novos métodos e classes que o programador escreve com métodos e classes "previamente empacotados", disponíveis na .NET Framework Class Library (FCL)

A FCL fornece uma rica coleção de classes e métodos ára efetuar cálculos matemáticos comuns, manipulação de string, manipulação de caractere, operações de entrada/saída, verificação de erro e muitas outras operações úteis.

6.3 Métodos da Classe Math

Os métodos da classe Math permitem que o programador efetue certos cálculos matemáticos comuns.

Métodos da classe Math comumente usados.

Método Descrição Exemplo
Abs(x) Valor absoluto de x Abs(23.7) é 23.7, Abs(0) é 0, Abs(-23.7) é 23.7
Ceiling(x) Arredonda x para o menor inteiro não menor do que x Ceiling(9.2) é 10.0, Ceiling(-9.8) é -9.0
Cos(x) Co-seno trigonométrico de x (x em radianos) Cos(0.0) é 1.0
Exp(x) Método exponencial Exp(1.0) é aproximadamente 2.7122818284590451
Floor(x) Arredonda x para o maior inteiro não maior do que x Floor(9.2) é 9.0, Floor(-9.8) é -10.0
Log(x) Logaritmo natural de x Log(2.7182818284590451) é aproximadamente 1.0
Max(x, y) Maior valor de x e y Max(2.3, 12.7) é 12.7, Max(-2.3, -12.7) é -2.3
Min(x, y) Menor valor de x e y Min(2.3, 12.7) é 2.3, Min(-2.3, -12.7) é 12.7
Pow(x, y) X elevado à potência y Pow(2.0, 7.0) é 128.0, Pow(9.0, .5) é 3.0
Sin(x) Seno trigonométrico de x Sin(0.0) é 0.0
Sqrt(x) Raiz quadrada de n Sqrt(900.0) é 30.0, Sqrt(9.0) é 3.0
Tan(x) Tangente trigonométrica de x Tan(0.0) é 0.0

6.4 Métodos

Os métodos permitem que o programador modularize os programas.
As variáveis declaradas nas definições de método são variáveis locais.
A maioria dos métodos tem uma lista de parâmetros que permite às chamadas a métodos e não são visíveis em nenhum outro método.

6.5 Definições de Métodos

  • Fig. 6.03: SquareInt.cs
    Demonstrando um método Square definido pelo programador.

  • Fig. 6.04: MaximumValue.cs
    Encontrando o máximo de três valores double.

6.6 Promoção de Argumentos

Outro recurso importante das definições de métodos é a conversão de argumentos.

Esse processo é normalmente referido como conversão implícita, na qual uma cópia do valor da variável é convertida para um tipo diferente, sem uma conversão explícita.

A conversão explícita ocorre quando a conversão especifica que ela deve ocorrer.

Tais conversões podem ser feitas com a classe Convert, no espaço de nomes System.
o C# suporta conversões de alargamento e estreitamento.

  • A conversão de alargamento ocorre quando um tipo é convertido para outros tipos, sem perda de dados.
  • A conversão de estreitamento ocorrer quando dados podem ser perdidos por meio de uma conversão.

Por exemplo, O método Sqrt da classe Math pode ser chamado com um argumento integer, mesmo que o método seja definido na classe Math para receber um argumento double.

Console.WriteLine(Math.Sqrt((int) 4 ));

6.7 Espaço de Nomes do C#

O C# contém muitas classes predefinidas, agrupadas em espaço de nomes. Coletivamente, nos referimos a esse código preexistente como Framework Class Library.

O código real das classes está localizado em arquivos .dll chamados montagens.

Instruções using especificam os espaços de nomes que usamos em cada programa.

6.8 Tipos de Valor e Tipos de Referência

Espaços de nomes da Framework Class Library

Espaço de nomes Descrição
System Contém classes e tipos de dados fundamentais
System.Data Contem classes que formam o ADO .NET
System.Drawing Contem classes usadas para desenho e elementos gráficos
System.IO Contem classes para entrada e a saída de dados
System.Threading Contem classes para múltiplas linhas de execução
System.Windows.Forms Contem classes usadas para criar interfaces com o usuário gráficas
System.Xml Contem classes usadas para processar dados XML

6.9 Passagem de Argumentos: Passagem por valor versus passagem por referência

Duas maneiras de passar argumentos para métodos em muitas linguagens de programação são passagem por valor e passagem pro referência.

Quando um argumento é passado por valor, o método chamado recebe uma cópia do valor do argumento.

Quando um argumento é passado usando passagem por referência, o chamador dá ao método a capacidade de acessar e modificar os dados originais do chamador diretamente.

Tipos de dados internos do C#

Tipo Tamanho em bits Valores Padrão
bool 8 true o false
char 16 '\u0000' a '\uFFFF' (conjunto de caracteres Unicode)
byte 8 0 a 255 (sem sinal)
sbyte 8 -128 a +127
short 16 -32.768 a +23.767
ushort 16 0 a 65.535 (sem sinal)
int 32 -2.147.483.648 a 2.147.483.647
uint 32 0 a 4.294.967.295 (sem sinal)
long 64 -9.223.372.036.854.775.808 a +9.223.372.036.854.755.807
ulong 64 0 a 18.446.744.073.709.551.615 (sem sinal)
decimal 128 1.0 x 10^-28 a 7.9 x 10^28
float 32 ±1,5 x 10−45 para ±3,4 x 1038 (ponto flutuante IEEE 754)
double 64 ±5.0 × 10−324 to ±1.7 × 10308 (ponto flutuante IEEE 754)
object
string (conjunto de caracteres Unicode)

6.10 Geração de Número Aleatórios

Agora, teremos uma breve e, esperamos, interessante diversão com uma programação de aplicativo popular.

  • Fig. 6.09: RandomInt.cs
    Gerando números inteiros aleatórios.

  • Fig. 6.10: RollDie.cs
    Usando a geração de números aleatórios para simular o lançamento de dados.

  • Fig. 6.11: RollDie2.cs
    lançamento de 12 dados com diagrama de frequência.

6.11 Exemplo: Jogo de azar

Um dos jogos de azar mais populares é um jogo de dados conhecido como craps, jogado em cassinos e becos de todo o mundo.

6.12 Duração das variáveis

Os atributos das variáveis incluem nome, tipo, tamanho e valor. Cada variável em um programa tem atributos adicionais, incluindo duração e escopo

A duração de uma variável é o período durante o qual ela existe na memória.

O escopo de uma variável é onde seu identificador pode ser referenciado em um programa.

As variáveis locais em um método têm duração automática.

6.13 Regras de escopo

O escopo de um identificador de uma variável, referência ou método é a parte do programa em que o identificador pode ser acessado.
Uma variável local ou referência declarada em um bloco pode ser usada apenas nesse bloco ou em blocos aninhados dentro desse bloco. No Capítulo 9 veremos que os membros estáticos são uma exceção a essa regra.

  • Fig. 6.13: Scoping.cs
    Demonstrando o escopo de variáveis locais e de instância.

6.14 Recursividade

Para alguns problemas, é interessante ter um método chamando a si mesmo.
Um método recursivo é um método que chama a si mesmo, diretamente ou por meio de outro método.

6.15 Exemplo Usando Recursividade: A série Fibonacci

Começa com 0 e 1 e tem a propriedade de que cada número de Fibonacci subsequente é a soma dos dois números de Fibonacci anteriores.

  • Fig. 6.16: FibonacciTest.cs
    Método de geração recursiva de números de Fibonacci.

6.16 Recursividade Versus Iteração

(Pesquise na internet)

6.17 Sobrecarga de Métodos

O C# permite que vários métodos de mesmo nome sejam definidos na mesma classe, desde que esses métodos tenham diferentes conjuntos de parâmetros.